【发布时间】:2020-05-29 18:45:49
【问题描述】:
嗨,我是 Flutter 的新手
我使用 ListView.Builder 来做这样的事情:
我使用两个小部件,一个用于地址信息,一个用于将新地址项添加到 ListView
我使用回调通知添加 IconButton 被按下但我收到错误:只有静态成员可以在初始化程序中访问。当我调用 addItemToList() 方法时
这是代码:
class TestPage2 extends StatefulWidget {
@override
_TestPage2State createState() => _TestPage2State();
}
class _TestPage2State extends State<TestPage2> {
List<Widget> lwidgets = [
_Adresses(),
_HorizontalDivider(),
_AddElement(() {
addItemToList();
})
];
void addItemToList() {
setState(() {
lwidgets.insert(lwidgets.length - 1, _Adresses());
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Contacts'),
),
backgroundColor: Color(0xFFE5E5EA),
body: Column(
children: <Widget>[
Text('ADRESS'),
Container(
height: 200,
child: ListView.builder(
itemCount: lwidgets.length,
itemBuilder: (BuildContext context, int index) {
return (lwidgets[index]);
},
physics: NeverScrollableScrollPhysics(),
),
),
],
),
);
}
}
这是 _AddElement 小部件:
class _AddElement extends StatelessWidget {
final Function() onAddItem;
const _AddElement(this.onAddItem);
@override
Widget build(BuildContext context) {
return Container(
height: 40,
color: Colors.white,
child: Row(
children: <Widget>[
Container(
height: 40,
color: Colors.white,
child: IconButton(
icon: Icon(Icons.add_circle),
iconSize: 24,
color: Color(0xFF34C759),
onPressed: () {
onAddItem();
},
),
),
],
),
);
}
}
我希望当我点击绿色按钮时,一个新项目将被添加到 ListView 中,如下所示:
我将不胜感激。
何塞·罗德里格斯
【问题讨论】:
-
您不能调用
setState,因为在创建列表时视图根本没有呈现。 -
谢谢@SanjaySharma,有什么建议吗?一些我可以开始调查的网址?
-
您可以创建一个插入列表的循环,您还可以返回可以在构建中调用的小部件列表