onPressed 在 Flutter 中创建多个 CheckboxListTile 实例
onPressed create multiple instances of CheckboxListTile in Flutter
我是 Flutter 的新手,所以我不确定该怎么做。我希望能够在用户按下最新 CheckboxListTile 正下方的按钮时添加同一 CheckboxListTile 的另一个实例。
目前的代码如下。
Widget build(BuildContext context) {
return ListView(
children: <Widget>[
CheckboxListTile(
title: TextField(
autocorrect: true,
),
value: checkBoxValue,
secondary: Icon(Icons.assignment),
onChanged: (bool newValue) {
setState(() {
checkBoxValue = newValue;
});
}
),
],
下面是我希望应用程序在用户按下后如何显示的示例代码。
Widget build(BuildContext context) {
return ListView(
children: <Widget>[
CheckboxListTile(
title: TextField(
autocorrect: true,
),
value: checkBoxValue,
secondary: Icon(Icons.assignment),
onChanged: (bool newValue) {
setState(() {
checkBoxValue = newValue;
});
}
),
CheckboxListTile(
title: TextField(
autocorrect: true,
),
value: checkBoxValue,
secondary: Icon(Icons.assignment),
onChanged: (bool newValue) {
setState(() {
checkBoxValue = newValue;
});
}
),
],
提前致谢!
在 ListView 中生成小部件是通过在其子项中添加 List<Widget>
。简单的说,大概长得像。
ListView(
children: <Widget>[widgetA, widgetA, widgetC]);
您需要做的是在List<Widget>
中手动添加小部件。您可以创建一个 List<Widget> _checkboxList
并创建一个 returns 一个 CheckboxListTile 小部件的函数。
CheckboxListTile _checkboxListTile(){
return CheckboxListTile(
title: TextField(
autocorrect: true,
),
value: checkBoxValue,
secondary: Icon(Icons.assignment),
onChanged: (bool newValue) {
setState(() {
checkBoxValue = newValue;
});
}
);
}
然后在您的按钮上,调用 _checkboxList.add(_checkboxListTile());
将其添加到 List<Widget> _checkboxList
RaisedButton(
onPressed: () {
setState(() {
_checkboxList.add(_checkboxListTile());
});
},
child: Text('Add checkbox'),
),
要在屏幕上显示列表 _checkboxList:
Widget build(BuildContext context) {
return ListView(children: _checkboxList);
}
如果有帮助请告诉我。
一种方法是使用这样的 ListView.builder
..
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
List<bool> checkBoxesCheckedStates = [false];
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Expanded(
child: ListView.builder(
itemCount: checkBoxesCheckedStates.length,
itemBuilder: (BuildContext context, int index){
return CheckboxListTile(
title: TextField(
autocorrect: true,
),
value: checkBoxesCheckedStates[index],
secondary: Icon(Icons.assignment),
onChanged: (bool newValue) {
setState(() {
checkBoxesCheckedStates[index] = newValue;
});
},
);
},
),
),
RaisedButton(
child: Text('Add'),
onPressed: (){
setState(() {
checkBoxesCheckedStates.add(false);
});
},
),
],
);
}
}
我是 Flutter 的新手,所以我不确定该怎么做。我希望能够在用户按下最新 CheckboxListTile 正下方的按钮时添加同一 CheckboxListTile 的另一个实例。
目前的代码如下。
Widget build(BuildContext context) {
return ListView(
children: <Widget>[
CheckboxListTile(
title: TextField(
autocorrect: true,
),
value: checkBoxValue,
secondary: Icon(Icons.assignment),
onChanged: (bool newValue) {
setState(() {
checkBoxValue = newValue;
});
}
),
],
下面是我希望应用程序在用户按下后如何显示的示例代码。
Widget build(BuildContext context) {
return ListView(
children: <Widget>[
CheckboxListTile(
title: TextField(
autocorrect: true,
),
value: checkBoxValue,
secondary: Icon(Icons.assignment),
onChanged: (bool newValue) {
setState(() {
checkBoxValue = newValue;
});
}
),
CheckboxListTile(
title: TextField(
autocorrect: true,
),
value: checkBoxValue,
secondary: Icon(Icons.assignment),
onChanged: (bool newValue) {
setState(() {
checkBoxValue = newValue;
});
}
),
],
提前致谢!
在 ListView 中生成小部件是通过在其子项中添加 List<Widget>
。简单的说,大概长得像。
ListView(
children: <Widget>[widgetA, widgetA, widgetC]);
您需要做的是在List<Widget>
中手动添加小部件。您可以创建一个 List<Widget> _checkboxList
并创建一个 returns 一个 CheckboxListTile 小部件的函数。
CheckboxListTile _checkboxListTile(){
return CheckboxListTile(
title: TextField(
autocorrect: true,
),
value: checkBoxValue,
secondary: Icon(Icons.assignment),
onChanged: (bool newValue) {
setState(() {
checkBoxValue = newValue;
});
}
);
}
然后在您的按钮上,调用 _checkboxList.add(_checkboxListTile());
将其添加到 List<Widget> _checkboxList
RaisedButton(
onPressed: () {
setState(() {
_checkboxList.add(_checkboxListTile());
});
},
child: Text('Add checkbox'),
),
要在屏幕上显示列表 _checkboxList:
Widget build(BuildContext context) {
return ListView(children: _checkboxList);
}
如果有帮助请告诉我。
一种方法是使用这样的 ListView.builder
..
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
List<bool> checkBoxesCheckedStates = [false];
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Expanded(
child: ListView.builder(
itemCount: checkBoxesCheckedStates.length,
itemBuilder: (BuildContext context, int index){
return CheckboxListTile(
title: TextField(
autocorrect: true,
),
value: checkBoxesCheckedStates[index],
secondary: Icon(Icons.assignment),
onChanged: (bool newValue) {
setState(() {
checkBoxesCheckedStates[index] = newValue;
});
},
);
},
),
),
RaisedButton(
child: Text('Add'),
onPressed: (){
setState(() {
checkBoxesCheckedStates.add(false);
});
},
),
],
);
}
}