小编Amd*_*xer的帖子

同一 Statefulwidget 的多个实例似乎共享同一个 State 对象?

我正在尝试使用 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)

class flutter statefulwidget

6
推荐指数
1
解决办法
2148
查看次数

标签 统计

class ×1

flutter ×1

statefulwidget ×1