代码之家  ›  专栏  ›  技术社区  ›  Sebastian

当我关注TextField-Bloc模式时,小部件重新呈现

  •  1
  • Sebastian  · 技术社区  · 8 年前

    我使用一个BLoC将状态保持在两个嵌套的 FullScreenDialogs .

    return FloatingActionButton(
          child: Icon(Icons.add),
          onPressed: () {
            Navigator.of(context).push(MaterialPageRoute(
              builder: (BuildContext context) => ProductBlocProvider(child: ProductEntryScreen()),
              fullscreenDialog: true
            ));
          },
        );
    

    ProductEntryScreen 有一堆 TextFields 一个按钮比打开一个新的 FullScreenDialog 文本字段 . TextField 在第二天 全屏对话框 ,onPressed函数,我在其中启动 ProductBlocProvider

    而重新运行会导致Bloc创建一个新实例,因此我最终会失去状态。

    我想做什么? 也许我做错了,所以我会解释我想达到的目标。

    我想保持两者之间的状态 当我填充所有字段时,当我完成时,我想按下一个按钮,将所有数据(两个屏幕)发送到一个数据库。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Sebastian    8 年前

    问题是,我在 MaterialPageRoute .

    return FloatingActionButton(
          child: Icon(Icons.add),
          onPressed: () {
            //Here I create the instance
            var _bloc = ProductBloc();
            Navigator.of(context).push(MaterialPageRoute(
              //And I pass the bloc instance to the provider
              builder: (BuildContext context) => ProductBlocProvider(bloc: _bloc, child: ProductEntryScreen()),
              fullscreenDialog: true
            ));
          },
        );