listview - 从父页面重新加载小部件内的 listview.builder
问题描述
5 个月前,我开始为我的学校项目开发 Flutter,但我遇到了一个问题。
我做了一个自定义Widget
,使用Listview.builder()
让我们调用这个myList小部件,它在parentPage中调用,然后,我从myList添加一个新项目到我的数据库,然后setState()
到我从数据库加载我的项目的 parentPage,parentPage正在重新加载但是myList及其项目不是。parentPage 和myList都是有状态的。
我的问题是如何构建(或初始化?)第二次myList以便显示添加的项目。
我看到了类似的问题,但我不明白如何将答案应用于listview.builder()
抱歉,由于合同原因,我不能输入任何我不允许的代码。
解决方案
您想从父小部件调用子小部件的方法,这可以使用全局键。
我只是在下面的代码中演示了如何做到这一点。
class DeleteWidget extends StatefulWidget {
@override
_DeleteWidgetState createState() => _DeleteWidgetState();
}
class _DeleteWidgetState extends State<DeleteWidget> {
callme() {
print("here, you have to load data, method in delete from home1");
setState((){}); // added
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Home1(
callme: callme,
),
),
);
}
}
class Home1 extends StatefulWidget {
final Function callme;
Home1({this.callme});
@override
_Home1State createState() => _Home1State();
}
class _Home1State extends State<Home1> {
@override
Widget build(BuildContext context) {
return Container(
child: RaisedButton(
child: Text("press"),
onPressed: () {
print("here you add data in database");
widget.callme();
},
),
);
}
}
推荐阅读
- android - 在Android中录制视频时显示textview
- java - 不兼容的类型 Object 不能转换成 Throwable?
- javascript - 当 iframe 改变时执行函数
- vue.js - 为什么 v-model 会改变 Vuex 状态而不是组件的本地数据?
- console - 服务现在公告 500(内部服务器错误)
- sql - 返回跨年份边界的前几个月数据 - SQL Server
- c# - 建立目录结构
- java - 从资源java中读取文件时出现空指针异常
- php - PHP查询中的EncryptByPassphrase
- android - How can I parse array of arrays JSON with Retrofit?