首页 > 解决方案 > 从父页面重新加载小部件内的 listview.builder

问题描述

5 个月前,我开始为我的学校项目开发 Flutter,但我遇到了一个问题。

我做了一个自定义Widget,使用Listview.builder()让我们调用这个myList小部件,它在parentPage中调用,然后,我从myList添加一个新项目到我的数据库,然后setState()到我从数据库加载我的项目的 parentPage,parentPage正在重新加载但是myList及其项目不是。parentPagemyList都是有状态的。

我的问题是如何构建(或初始化?)第二次myList以便显示添加的项目。

我看到了类似的问题,但我不明白如何将答案应用于listview.builder()

抱歉,由于合同原因,我不能输入任何我不允许的代码。

标签: listviewflutterdartwidgetstateful

解决方案


您想从父小部件调用子小部件的方法,这可以使用全局键。

我只是在下面的代码中演示了如何做到这一点。

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();
        },
      ),
    );
  }
}

推荐阅读