问题描述
我一直在Flutter中开发待办事项列表应用程序,但是在此过程中,我意识到应该在添加新任务时添加按钮不起作用。我不知道为什么它不起作用,因为我对Flutter很陌生。为什么会出现此问题!?
main.dart
List<String> _toDoItems = [];
void _addToDoItem(String task) {
if(task.length > 0) {
setState(() {
_toDoItems.add(task);
});
}
}
Expanded(
flex: 8,child: TextField(
autofocus: true,onSubmitted: (val) {
_addToDoItem(val);
},),Expanded(
flex: 2,child: RaisedButton(
child: Text('ADD'),onPressed: () => _addToDoItem,
解决方法
您可以在下面复制粘贴运行完整代码
您可以使用TextEditingController
并将controller.text
传递给_addToDoItem
代码段
TextEditingController _controller = TextEditingController();
Expanded(
flex: 8,child: TextField(
controller: _controller,Expanded(
flex: 2,child: RaisedButton(
child: Text('ADD'),onPressed: () => _addToDoItem(_controller.text),
工作演示
完整代码
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
createState() => MyAppState();
}
class MyAppState extends State<MyApp> {
List<String> _toDoItems = [];
TextEditingController _controller = TextEditingController();
void _addToDoItem(String task) {
if (task.length > 0) {
setState(() {
_toDoItems.add(task);
});
}
}
Widget _buildToDoItem(String toDoText) {
return ListTile(title: Text(toDoText));
}
Widget _buildToDoList() {
return Expanded(
child: ListView.builder(
itemBuilder: (context,index) {
if (index < _toDoItems.length) {
return _buildToDoItem(_toDoItems[index]);
}
},),);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: PreferredSize(
preferredSize: Size.fromHeight(50),child: AppBar(
centerTitle: true,backgroundColor: Colors.red,title: Text(
'To Do List',style: TextStyle(
fontSize: 24,fontWeight: FontWeight.bold,)),backgroundColor: Colors.white,body: Column(
crossAxisAlignment: CrossAxisAlignment.center,children: [
Container(
margin: EdgeInsets.all(22),child: Row(
children: [
Expanded(
flex: 8,child: TextField(
controller: _controller,autofocus: true,onSubmitted: (val) {
_addToDoItem(val);
},decoration: InputDecoration(
hintText: 'Add a tak here...',enabledBorder: OutlineInputBorder(
borderRadius:
BorderRadius.all(Radius.circular(12.0)),borderSide: BorderSide(color: Colors.red,width: 2),focusedBorder: OutlineInputBorder(
borderRadius:
BorderRadius.all(Radius.circular(12.0)),borderSide:
BorderSide(color: Colors.red,width: 1.5),Expanded(
flex: 2,child: RaisedButton(
child: Text('ADD'),)
],_buildToDoList(),],);
}
}
,
您没有添加参数。
import json
dictionary = {"team1" : team1,"team2": team2,"ht": ht,"ft": ft}
json_dump = json.dumps(dictionary)
with open("YourFilePath","w") as f:
f.write(json_dump)