flutter - 通知相邻小部件
问题描述
我有一个包含“保存”按钮的小部件。按下该按钮后,其他几个小部件(不仅是祖先小部件)必须将其状态保存到文件中。我不知道怎么通知他们。在颤振中实现这一目标的最佳方法是什么?我正在考虑Notification
在“保存”小部件中使用,最近的共享祖先将包含一个NotificationListener
触发每个小部件将订阅的事件的事件。对我来说,它看起来不像一个解决方案。
解决方案
Provider 是对各种规模的应用程序进行状态管理的推荐方式。——Chris Sells——Flutter 产品经理。2019 年 6 月 19 日
一开始挺复杂的,最好看看Simple app state management
ChangeNotifier
只要类中有任何更改,就会使用该函数notifyListeners
:
class ChangeNotifierModel extends ChangeNotifier {
String stringThatChanges = 'startValue';
void changeTheString(String value) {
stringThatChanges = value;
notifyListeners();
}
}
唯一特定于的代码是ChangeNotifier
对notifyListeners()
. 每当模型以可能更改应用程序 UI 的方式发生更改时调用此方法。
我自己对 Flutter 还很陌生,但就我的理解而言,它有点像包装器,例如包装 main.dart 的子级
MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => SingleNotifier())
],
child: MyApp(),
));
不要忘记依赖项
dependencies:
provider: ^4.3.2+2
推荐阅读
- google-apps-script - 我可以保护 Google 表格的名称吗?还是按位置而不是名称引用工作表?
- android - 已删除的视频显示在 Android Studio 代码的视频播放器中
- android - 按下其他按钮时,带有 setOnClickListener() 的按钮如何完成未完成的工作?
- laravel - laravel 中的依赖连续 crud
- python - 我们如何使用“Google Sheet API”使用 Python 使用新数据更新工作表
- linq - IEnumerable EnumerableRowCollection 之间的转换
- vb6 - vb6 winsock 连接而不是每个设备的无限客户端减少到 2
- laravel - 不能在 laravel 6.x (6.9.0) 中使用 Session()->get('')
- java - Gradle 插件依赖
- c++ - 如何像模板一样打印地图?