Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在flatter中根据需要动态插入和删除小部件?_Flutter_Flutter Layout_Flutter Animation_Flutter Test - Fatal编程技术网

Flutter 如何在flatter中根据需要动态插入和删除小部件?

Flutter 如何在flatter中根据需要动态插入和删除小部件?,flutter,flutter-layout,flutter-animation,flutter-test,Flutter,Flutter Layout,Flutter Animation,Flutter Test,这个问题很常见。然而,我试图通过点击按钮向列中添加一个容器来模拟该事件。但是,容器未添加到列中或未在屏幕上渲染。 除此之外,setState方法还显示一条警告,表示它未被引用 这是密码 import 'package:flutter/material.dart'; import 'package:focus7/Configurations/size_config.dart'; class Demo2 extends StatefulWidget { @override _Demo2St

这个问题很常见。然而,我试图通过点击按钮向列中添加一个容器来模拟该事件。但是,容器未添加到列中或未在屏幕上渲染。 除此之外,setState方法还显示一条警告,表示它未被引用

这是密码

import 'package:flutter/material.dart';
import 'package:focus7/Configurations/size_config.dart';

class Demo2 extends StatefulWidget {
  @override
  _Demo2State createState() => _Demo2State();
}

class _Demo2State extends State<Demo2> {
  List<Widget> containersList = [
    Container(
      color: Colors.amberAccent,
      height: 100,
      width: 200,
    ),
    Container(
      color: Colors.red,
      height: 100,
      width: 200,
    ),
    Container(
      color: Colors.brown,
      height: 100,
      width: 200,
    ),
    Container(
      color: Colors.green,
      height: 100,
      width: 200,
    ),
  ];
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: SafeArea(
      child: Column(children: <Widget>[
        ...containersList,
        RaisedButton(
          onPressed: () {
            setState() => containersList.add(Container(
                  color: Colors.lightBlue,
                  height: 100,
                  width: 200,
                ));
          },
          child: Text("click"),
        )
      ]),
    ));
  }
}
导入“包装:颤振/材料.省道”;
导入“package:focus7/Configurations/size_config.dart”;
类Demo2扩展了StatefulWidget{
@凌驾
_Demo2State createState()=>_Demo2State();
}
类_Demo2State扩展状态{
列表容器列表=[
容器(
颜色:Colors.amberAccent,
身高:100,
宽度:200,
),
容器(
颜色:颜色,红色,
身高:100,
宽度:200,
),
容器(
颜色:Colors.brown,
身高:100,
宽度:200,
),
容器(
颜色:颜色。绿色,
身高:100,
宽度:200,
),
];
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:安全区(
子项:列(子项:[
…集装箱名单,
升起的按钮(
已按下:(){
setState()=>containersList.add(容器(
颜色:颜色。浅蓝色,
身高:100,
宽度:200,
));
},
子项:文本(“单击”),
)
]),
));
}
}
以下是输出:


问题在于您使用的是箭头函数,这意味着无论您在右边写什么,都会返回一些东西,并且您没有将其分配给任何不是实际需求的变量,这就是为什么它会显示错误

在解决问题时,将设置状态替换为以下设置状态

setState(() {
              containersList.add(Container(
                color: Colors.lightBlue,
                height: 100,
                width: 200,
              ));
            });

嘿,谢谢你的回复,它工作得很好。