- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在使用 BLoC 来保持两个嵌套的 FullScreenDialogs
之间的状态。
当我按下第一个屏幕时,我正在初始化 bloc,就像这样
return FloatingActionButton(
child: Icon(Icons.add),
onPressed: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (BuildContext context) => ProductBlocProvider(child: ProductEntryScreen()),
fullscreenDialog: true
));
},
);
ProductEntryScreen
有一堆 TextFields
和一个按钮,然后打开一个新的 FullScreenDialog
。这个新屏幕也有 TextFields
。我遇到的问题是,每次我在第二个 FullScreenDialog
上的 TextField
上书写时,我启动 ProductBlocProvider
的 onPressed 函数都会运行再次。
重新运行导致 Bloc 创建一个新实例,所以我最终失去了状态。
我想做什么?也许我做错了,所以我会解释我想要实现的目标。
我想在填写所有字段时保持两个 FullScreenDialogs
之间的状态,完成后我想按下一个按钮,将所有数据(两个屏幕)发送到数据库。
最佳答案
问题是我在 MaterialPageRoute
的构建器函数中创建了提供者内部的 bloc 实例。
该构建器函数被重复调用,并且每次都创建一个新的 bloc 实例。解决方案是从 builde 函数中删除 bloc 实例的创建,如下所示:
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
));
},
);
关于dart - 当我专注于 TextField - Bloc Pattern 时小部件重新呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51956108/
我有一个 Collection View 并以这样一种方式排列它,即在屏幕的一侧有一个单独的列,并且根据焦点中的集合项替换内容。 如果对某个项目的关注超过 0.5 秒,我希望能够换出内容。 这是我目前
这是一种经常出现的情况,对我来说永远不会太容易。我想我会问其他人如何处理它。 想象一下,如果 demo=60 命令行参数的处理是这样完成的: if DemoOptionSpecified() {
我是一名优秀的程序员,十分优秀!