This is my widget tree. I want to change the Text widget in the MemberSection
class when I press RaisedButton
in the AdminSection
class. Both MemberSection
and AdminSection
are in HomePage
class.
Below are dart files:
import 'package:flutter/material.dart';
void main() {
runApp(
MaterialApp(
home: HomePage(),
),
);
}
class HomePage extends StatelessWidget {
final int count = 0;
@override
Widget build(BuildContext context) {
return new Scaffold(
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[MemberSection(count), AdminSection(count)],
),
);
}
}
class MemberSection extends StatefulWidget {
MemberSection(this.count);
final int count;
@override
_MemberSectionState createState() => new _MemberSectionState();
}
class _MemberSectionState extends State<MemberSection> {
@override
Widget build(BuildContext context) {
return new Text('${widget.count} member(s)');//I need to change this widget
}
}
class AdminSection extends StatefulWidget {
AdminSection(this.count);
final int count;
@override
_AdminSectionState createState() => new _AdminSectionState();
}
class _AdminSectionState extends State<AdminSection> {
void incrementer() {
setState(() {
//widget.count++; //cannt do
});
}
void decrementer() {
setState(() {
//widget.count--; //cannt do
});
}
@override
Widget build(BuildContext context) {
return new Column(
children: <Widget>[
Text('${widget.count} admin(s)'),//Also, I need to change this widget
ButtonBar(
children: <Widget>[
RaisedButton(
child: Text('add a member'),
onPressed: incrementer,
),
RaisedButton(
child: Text('delete a member'),
onPressed: decrementer,
),
],
),
],
);
}
}
Note: this example for to demonstrate my problem.
I know that I can implement incrementer
and decrementer
in HomePage
class and pass the function down the widget but according to this scenario it cannot be done, because one RaisedButton
widgets are in other side of the widget tree.
Update:
Linked duplicate question is different from my question because, I'm not instantiating the MemberSection
inside AdminSection