Flutter 为什么不是';调用initState时重新填充的变量?
我试图用注释列表填充搜索,我从数据库中获取。 数据库调用是在Flutter 为什么不是';调用initState时重新填充的变量?,flutter,Flutter,我试图用注释列表填充搜索,我从数据库中获取。 数据库调用是在initState中进行的,因此有注释供searchDelegate实例化 问题 搜索关闭时,不会再次调用initState。这会导致错误的搜索结果 它不应该显示已删除的条目,以及如何反应性地删除该条目(可能是提供程序) 以下是问题的视频: 目录的树结构: 。 ├── 主飞镖 ├── 模型 │ └── 注:省道 ├── 屏风 │ ├── 另一个屏幕 │ ├── 注意细节。省道 │ ├── 注释\u list.dart │
initState
中进行的,因此有注释供searchDelegate实例化
问题
initState
。这会导致错误的搜索结果。
├── 主飞镖
├── 模型
│ └── 注:省道
├── 屏风
│ ├── 另一个屏幕
│ ├── 注意细节。省道
│ ├── 注释\u list.dart
│ ├── 外页省道
│ └── 搜索屏幕
├── 乌提尔斯
│ ├── 数据库\u helper.dart
│ └── 省道
└── 小部件
├── 记事本
└── 记事本
4个目录,11个文件
外部页面的代码。省道:
~~~剪贴导入~~~~
类OuterPage扩展StatefulWidget{
@凌驾
状态createState(){
返回OuterPageState();
}
}
类OuterPageState扩展了状态{
最终GlobalKey _scaffoldKey=新的GlobalKey();
DatabaseHelper DatabaseHelper=DatabaseHelper();
//调用搜索委托类
SearchAppBarDelegate\u searchDelegate;
int _selectedTab=0;
最终页面选项=[
NoteList(),
另一个屏幕(),
];
@凌驾
void initState(){
updateListView()。然后((结果){
此._searchDelegate=SearchAppBarDelegate(结果);
});
打印(“初始状态被称为”);
super.initState();
}
~~~剪断其他代码~~~~
下面是(可重用组件的分支)
我有一些自己的想法来解决这个问题:
注释列表中传递搜索代理
提供商将从其本地副本注释中删除该条目,还将调用数据库删除该条目,对吗
请帮助我了解这样做是否有任何缺陷,或者这是正确的做法
寻找“干净”的方法来解决这个问题,而不是黑客的解决方案。
谢谢
如果需要更多信息,请告诉我