我在TextField里面創建了一個ListView.builder. 當用戶點擊按鈕時,它會添加新的TextField. 如何TextField在 a 中使用不同的控制器ListView.builder?謝謝。
代碼
ListView.builder(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: categoryCount,
itemBuilder: (context, index) {
return TextField(
// controller:
decoration: InputDecoration(
hintText: 'Amount',
border: InputBorder.none,
focusedBorder: InputBorder.none,
enabledBorder: InputBorder.none,
errorBorder: InputBorder.none,
disabledBorder: InputBorder.none,
),
);
});
uj5u.com熱心網友回復:
您可以創建一個 TextFieldController 串列,并通過在 itemBuilder 函式中作為引數傳遞的索引來訪問每個串列
uj5u.com熱心網友回復:
試試這個答案希望對你有幫助。并嘗試以下答案。您使用了有狀態小部件
創建變數
var name = <TextEditingController>[];
var cards = <Card>[];
創建 init() 函式
@override
void initState() {
super.initState();
cards.add(createCard());
}
用于創建 TextEditingController 的 Create 方法
createCard() {
var nameController = TextEditingController();
name.add(nameController);
return Card(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
TextField(
controller: nameController,
decoration: InputDecoration(
border: OutlineInputBorder(),
labelText: ' Name',
hintText: 'Add Name',
),
),
],
),
);
}
創建您的小部件:
Column(
children: <Widget>[
Expanded(
child: ListView.builder(
itemCount: cards.length,
itemBuilder: (BuildContext context, int index) {
return cards[index];
},
),
),
Padding(
padding: const EdgeInsets.all(16.0),
child: ElevatedButton(
child: Text('Add'),
onPressed: () => setState(
() => cards.add(
createCard(),
),
),
),
)
],
),
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/342522.html
上一篇:將焦點設定到第一個串列視圖項
