【发布时间】:2020-07-01 21:36:38
【问题描述】:
当我尝试重建一个类时,我收到了上面引用的错误。我正在调用的类 ListOfIngs() 是一个基本上创建 textField 的类,但我的目标是创建大量 TextField,变量 countIngs 在 listView 中保存确切数字的值。代码如下:
class NewGroceryList extends State<NewGroceryListWidget> {
final GlobalKey<_ListOfIngsState> _key = GlobalKey();
final myController = new TextEditingController();
int countings = 0;
Widget build(BuildContext context) {
debugPrint(myController.text);
return Scaffold(
appBar: AppBar(
title: Text("New Grocery List"),
leading: IconButton(
icon: const Icon(Icons.arrow_back_ios, color: Colors.white),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ListsPage()),
);
},
),
actions: <Widget>[
IconButton(
icon: new Icon(Icons.check, color: Colors.white),
onPressed: () {})
],
),
drawer: AppDrawer(),
body: Container(
padding: EdgeInsets.fromLTRB(10.0, 20.0, 10.0, 30.0),
child: Column(
children: <Widget>[
Row(
children: <Widget>[
Text('Ingredients',
style: GoogleFonts.biryani(fontSize: 15.0)),
IconButton(
icon: new Icon(Icons.add),
onPressed: () {
setState(() {
countings++;
});
debugPrint('$countings');
},
)
],
),
setState(() {
ListOfIngsWidget(countings);
}),
],
),
));
}
}
这是 ListOfIngs 类/小部件: 类 ListOfIngsWidget 扩展 StatefulWidget { 最终整数计数;
const ListOfIngsWidget(this.countIngs, {Key key}) : super(key: key);
@override
_ListOfIngsState createState() => _ListOfIngsState();
}
class _ListOfIngsState extends State<ListOfIngsWidget> {
List<TextEditingController> _controllerList = [];
List<TextField> _textFieldList = [];
@override
void initState() {
for (int i = 1; i <= widget.countIngs; i++) {
TextEditingController controller = TextEditingController();
TextField textField = TextField(
controller: controller,
decoration: InputDecoration(
border: OutlineInputBorder(),
labelText: 'Ingredient $i',
),
);
_textFieldList.add(textField);
_controllerList.add(controller);
}
super.initState();
}
@override
Widget build(BuildContext context) {
return new Container(
child: Flexible(
child: ListView(children: _textFieldList),
),
);
}
}
【问题讨论】:
-
能否请您发布更多代码,什么类型的变量是计数?我假设 int?
-
是的,它是一个整数,我看看能不能发布与问题相关的所有内容
-
移除
ListOfIngsWidget(countings);小部件周围的setState。您不能将setState作为列的子项的一部分。一个 setState 应该足以重建整个类。 -
@AkoraIng.DKB 我认为这不起作用,当我按下按钮时,新的 textField 不会出现。