我正在尝试使用 Flutter 构建一个应用程序,但遇到了一个小问题。我正在尝试实现一个包含三个页面的 BottomNavigaionBar 样式应用程序。(参见第一个片段)布局使用了三个“ChorePage”类型的对象。该应用程序似乎正在创建三个 ChorePage 实例,但仅创建一个 _ChorePageState 实例。
这会导致变量 _dataRows 在三个选项卡之间共享,这意味着我无法将不同的信息放入不同的选项卡中。为什么会发生这种情况以及如何预防?
我已将打印语句放入 createState() 函数中,并在 PopulateRows 函数中打印“this”变量,该函数在每次重建 ChorePage 时都会调用。打印输出如下所示,确认这三个小部件确实使用相同的 State 对象。(对象A只调用一次createState,并且this变量引用同一个对象)
class AppLayout extends StatefulWidget {
@override
_AppLayoutState createState() => _AppLayoutState();
}
class _AppLayoutState extends State<AppLayout> {
int _currentIndex = 0;
String title = 'Test';
List<Widget> _children = [
new ChorePage(Title:'A'),
new ChorePage(Title:'B'),
new ChorePage(Title:'C')
];
@override
Widget build(BuildContext context) {
//STUFF BEFORE INIT
return Scaffold(
appBar: AppBar(
title: Text('$title'),
),
body: _children[_currentIndex],
bottomNavigationBar: BottomNavigationBar(
onTap: onTabTapped,
currentIndex: _currentIndex,
items:[ …
Run Code Online (Sandbox Code Playgroud)