首页 > 解决方案 > Flutter GridView.builder 如何更新

问题描述

我正在尝试使用一张GriView卡片构建一个 Flutter 应用程序,并且每次点击floatingActionButton. 但是如何更新我的观点?我知道这些项目已添加到我的列表中,但GridView没有显示更改。

  List<Widget> cardsList = [];

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: AppBar(
        title: Text('Team Kitty'),
      ),
      body: GridView.builder(
          itemCount: cardsList.length,
          gridDelegate:
              SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3),
          itemBuilder: (BuildContext context, int index) {
            return Container(child: cardsList[index]);
          }),
      floatingActionButton: new FloatingActionButton(
        onPressed: addCard(),
        tooltip: 'Add Card',
        child: new Icon(Icons.add),
      ),
    );
  }
  addCard() {
    setState(() {
      cardsList.add(_RobotCard());
    });
  }
}

我发现很难找到好的网格文档,也许有人有提示?

谢谢大家

标签: androiddartflutter

解决方案


您在构建小部件时调用addCard方法,而不是将方法的引用作为onPressed参数传递:

floatingActionButton: new FloatingActionButton(
  onPressed: addCard, // pass method reference here
  tooltip: 'Add Card',
  child: new Icon(Icons.add),
)

推荐阅读