【发布时间】:2018-10-23 04:11:39
【问题描述】:
我有一个简单的 Flutter 应用程序,其中包含从 Firebase 数据库 (Cloud Firestore) 加载的项目列表。
如您所见 - 有用于添加项目的按钮,每个项目都可以删除或编辑。当我按下所选项目的编辑按钮时,会出现带有 TextField 的 AlertDialog,在此 TextField 中,用户可以看到当前项目名称并对其进行编辑。 我只有在编辑后关闭对话框时遇到问题。
new IconButton(
icon: new Icon(Icons.edit, color: Colors.white),
onPressed: (){ showItemUpdateDialog(context, document); }
)
.......
void showItemUpdateDialog(BuildContext context, DocumentSnapshot item) {
String itemName = "";
var textContoller = new TextEditingController();
textContoller.text = item['name'];
var dialog = new AlertDialog(
title: new Text("item name"),
content: new TextField(
controller: textContoller,
onChanged: (value) {newName = value;},
),
actions: <Widget>[
new FlatButton(
child: Text("cancel"),
onPressed: (){
Navigator.pop(context);
},
),
new FlatButton(
child: Text("Update"),
onPressed: () {
updateItemOnServer(item, newName);
Navigator.pop(context);
}
)
],
);
showDialog(context: context, child: dialog);
}
值正在正确更新,但 AlertDialog 未关闭。错误代码如下。我认为这是因为它是由从服务器修改和更新的项目调用的。
flutter:处理手势时抛出以下断言: 颤振:查找已停用小部件的祖先是不安全的。 flutter:此时widget的元素树的状态是no 更稳定。安全地引用颤振:小部件的祖先在其 dispose() 方法,通过调用flutter保存对祖先的引用: 小部件的 didChangeDependencies() 中的 inheritFromWidgetOfExactType() 方法。
【问题讨论】:
-
您解决了吗?如果有,怎么做?
-
你好@moonvader 你能帮帮我吗我想实现和你一样的功能这是我的问题:stackoverflow.com/questions/61092208/…
标签: firebase dart google-cloud-firestore flutter flutter-layout