Flutter:如何将文本字段的输入保存到 int 变量?
Flutter : how do i save input from a text field to an int variable?
这是我的文本控制器
final amountController = TextEditingController();
@override
void dispose() {
amountController.dispose();
super.dispose();
}
当我想将项目添加到列表时,有一个图标按钮显示一个对话框,其中包含一个文本字段,我应该在其中获取输入。
IconButton(
icon: Icon(Icons.add),
onPressed: () {
// //this is the part where i add a new income to my list
showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text('Add income'),
content: TextField(
keyboardType: TextInputType.number,
controller: amountController,
onChanged: (s) {
int s = int.parse(amountController.text);
amount = s;
transactions.add(s);
},
),
));
}),
问题是我不知道如何保存这里的数据
List<int> transactions = [];
int amount = 0;
我尝试了另一种方式:
TextEditingController _textFieldController = TextEditingController();
List<int> transactions = [];
int Total = 0;
Future<void> _displayTextInputDialog(BuildContext context) async {
int Amount = 0;
String valueText = '';
return showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text('Add income'),
content: TextField(
keyboardType: TextInputType.number,
onChanged: (value) {
setState(() {
valueText = value;
});
},
controller: _textFieldController,
),
actions: <Widget>[
FlatButton(
color: Colors.red,
textColor: Colors.white,
child: Text('CANCEL'),
onPressed: () {
setState(() {
Navigator.pop(context);
});
},
),
FlatButton(
color: Colors.green,
textColor: Colors.white,
child: Text('OK'),
onPressed: () {
setState(() {
Amount = int.parse(valueText);
transactions.add(Amount);
Total = Total + Amount;
print(Amount);
Navigator.pop(context);
});
},
),
],
);
});
}
我只是在平面按钮中调用了函数
你不应该在 onChanged 方法中写下这一行 transactions.add(s);
,因为这样你输入的每个数字都会在列表中添加一个值。
所以你必须将 onChanged 值分配给金额值,并在按钮的 onPressed 方法中向对话框添加一个按钮添加此行 transactions.add(s);
这是我的文本控制器
final amountController = TextEditingController();
@override
void dispose() {
amountController.dispose();
super.dispose();
}
当我想将项目添加到列表时,有一个图标按钮显示一个对话框,其中包含一个文本字段,我应该在其中获取输入。
IconButton(
icon: Icon(Icons.add),
onPressed: () {
// //this is the part where i add a new income to my list
showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text('Add income'),
content: TextField(
keyboardType: TextInputType.number,
controller: amountController,
onChanged: (s) {
int s = int.parse(amountController.text);
amount = s;
transactions.add(s);
},
),
));
}),
问题是我不知道如何保存这里的数据
List<int> transactions = [];
int amount = 0;
我尝试了另一种方式:
TextEditingController _textFieldController = TextEditingController();
List<int> transactions = [];
int Total = 0;
Future<void> _displayTextInputDialog(BuildContext context) async {
int Amount = 0;
String valueText = '';
return showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text('Add income'),
content: TextField(
keyboardType: TextInputType.number,
onChanged: (value) {
setState(() {
valueText = value;
});
},
controller: _textFieldController,
),
actions: <Widget>[
FlatButton(
color: Colors.red,
textColor: Colors.white,
child: Text('CANCEL'),
onPressed: () {
setState(() {
Navigator.pop(context);
});
},
),
FlatButton(
color: Colors.green,
textColor: Colors.white,
child: Text('OK'),
onPressed: () {
setState(() {
Amount = int.parse(valueText);
transactions.add(Amount);
Total = Total + Amount;
print(Amount);
Navigator.pop(context);
});
},
),
],
);
});
}
我只是在平面按钮中调用了函数
你不应该在 onChanged 方法中写下这一行 transactions.add(s);
,因为这样你输入的每个数字都会在列表中添加一个值。
所以你必须将 onChanged 值分配给金额值,并在按钮的 onPressed 方法中向对话框添加一个按钮添加此行 transactions.add(s);