我剛開始學習 flutter 并且正在嘗試創建一個待辦事項應用程式,但是每次創建一個新的待辦事項時,標題的值和所有待辦事項的描述都保持??不變,我嘗試了所有方法,但沒有區別,請告訴我什么是代碼有問題,如何保存每個待辦事項的標題和描述的值?我的代碼:
class _HomePageState extends State<HomePage> {
TextEditingController _titleController = TextEditingController();
TextEditingController _detailController = TextEditingController();
List todos = [];
@override
void initState() {
super.initState();
todos.add('');
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Container(
width: double.infinity,
padding: const EdgeInsets.symmetric(
horizontal: 24.0,
),
color: const Color(0xfff6f6f6f6),
child: Stack(
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
margin: const EdgeInsets.only(bottom: 32.0, top: 32.0),
child: const Text(
"Reminders",
style: TextStyle(
fontSize: 25.0,
fontWeight: FontWeight.bold
),
),
),
Expanded(
child: ListView.builder(
itemCount: todos.length,
physics: const BouncingScrollPhysics(),
itemBuilder: (BuildContext context, int index) {
return Dismissible(
key: Key(todos[index]),
child: Container(
width: double.infinity,
padding: const EdgeInsets.symmetric(
vertical: 20.0,
horizontal: 24.0
),
margin: const EdgeInsets.only(
bottom: 20.0,
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextField(
cursorColor: Colors.black,
autofocus: true,
controller: _titleController,
style: const TextStyle(
fontSize: 22.0,
fontWeight: FontWeight.bold
),
decoration: const InputDecoration(
hintText: "Enter a title",
border: InputBorder.none,
),
),
const Divider(
color: Colors.black,
),
Padding(
padding: const EdgeInsets.only(top: 0.0),
child: TextField(
controller: _detailController,
style: TextStyle(
fontSize: 20.0,
color: Colors.grey[900],
),
cursorColor: Colors.black,
maxLines: null,
decoration: const InputDecoration(
hintText: "Enter the description",
label: Text("description"),
border: InputBorder.none
),
),
),
],
),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20.0)
),
),
);
},
),
)
],
),
Positioned(
bottom: 24.0,
right: 0.0,
child: GestureDetector(
onTap: () {
setState(() {
todos.add('');
});
},
child: Container(
width: 60.0,
height: 60.0,
decoration: BoxDecoration(
color: Colors.black87,
borderRadius: BorderRadius.circular(20.0),
),
child: const Icon(Icons.add, color: Colors.white, size: 35.0),
),
),
)
],
),
),
),
);
}
}
uj5u.com熱心網友回復:
您好,歡迎來到顫振的世界,
就像你對標題和細節所做的一樣,每個文本欄位都需要它自己的 TextEditingController。因此,您可以為標題和描述添加控制器串列。
List<TextEditingController> _titleController = [];
List<TextEditingController> _detailController = [];
并在添加 todo 時為兩者添加一個條目。
todo.add('')
_titleController.add(TextEditingController())
_detailController.add(TextEditingController())
在 TextFields 中,您應該按索引參考:
...
child: TextField(controller: _detailController[index],
...
這應該有助于解決您的問題。
我建議您查看一些教程并嘗試重建它們。
玩得開心!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/344849.html
上一篇:我的顫振網路構建失敗了
