当我从另一个小部件设置状态(使用Mobx)时,我正在努力在我的抽屉组件中进行React。
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
final _pageIndex = PageIndex();
List drawerItems = [
{
"icon": Icons.list,
"name": "Aufgaben",
},
{
"icon": Icons.add,
"name": "Neue Aufgabe",
},
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Observer(
builder: (_) => Text(drawerItems[_pageIndex.value]["name"],
style: TextStyle(color: Colors.black)),
),
centerTitle: true,
backgroundColor: Theme.of(context).canvasColor,
iconTheme: IconThemeData(color: Colors.black),
elevation: 0.0,
),
drawer: Drawer(
child: ListView(
children: <Widget>[
ListView.builder(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: drawerItems.length,
itemBuilder: (BuildContext context, int index) {
Map item = drawerItems[index];
return ListTile(
leading: Icon(
item['icon'],
),
title: Text(
item['name'],
),
onTap: () {
_pageIndex.setIndex(index);
Navigator.pop(context);
},
);
},
),
],
),
),
body: Observer(
builder: (_) => IndexedStack(
index: _pageIndex.value,
children: <Widget>[
AufgabenListe(),
NeueAufgabe(),
],
),
),
);
}
}
当我在抽屉中单击一个项目时,我会调用_pageIndex.setIndex(index);
来调用Mobx SetIndex函数。这工作正常,我的两个观察员正在按预期进行重建。
我的问题是我也想从子组件中控制索引堆栈的索引。例如,NeueAufgaben()
小部件中的示例。但是当我这样做时,两个观察员arent都触发了重新提交。
有人知道如何做到这一点吗?
非常感谢;)