我有两个textField,我想使用Flutter将两个textField的总和转换为Text。 我尝试了几种方法,但我不知道该怎么做,
我有许多textField,并且它会根据我的列表“字母”而变化,那么如何获取所有出现的所有textField的总数?
List letter;
int letterCount = 0;
int letterCount2 = 0;
for(int count; count<(letters.length); count++){
TextField(
onChanged: (text) {
setState(){
letterCount = int.parse(text);
}
},
}
Text(
'Total - $letterCount2',
)
此代码无法正常工作,如果我退格或更改答案,我也想使用它 如果有人可以帮助我解决这个问题,那就太好了:)
答案 0 :(得分:1)
您需要将计算结果包装到setState中,以便应用程序重新绘制以显示更新的总数:
int letterCount = 0;
int letterCount2 = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(children: <Widget>[
TextField(
onChanged: (text) {
setState(() {
letterCount = int.parse(text);
});
},
),
TextField(
onChanged: (text) {
setState(() {
letterCount2 = letterCount + (int.parse(text));
});
},
),
Text(
'Total - $letterCount2',
),
]));
}
答案 1 :(得分:1)
如果使用stateless
小部件
尝试使用Statefull
小部件
,每当您要更新ui时,请确保您正在调用setState
方法
尝试下面显示的代码
import 'package:flutter/material.dart';
class TestScreen extends StatefulWidget {
@override
_TestScreenState createState() => _TestScreenState();
}
class _TestScreenState extends State<TestScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: ListView(
children: <Widget>[
TextField(onChanged: (text) {
setState(() {
letterCount = int.parse(text);
});
}),
TextField(onChanged: (text) {
setState(() {
letterCount2 = letterCount + (int.parse(text));
});
}),
Text('Total - $letterCount2')
],
),
);
}
//declare your variables.
int letterCount = 0;
int letterCount2 = 0;
}
答案 2 :(得分:1)
就像您和其他人一样,更改第一个TextField不会更改结果。我会这样:
int letterCount = 0;
int letterCount2 = 0;
TextField(
onChanged: (text) {
setState(() {
letterCount = int.parse(text);
});
},
TextField(
onChanged: (text) {
setState(() {
letterCount2 = int.parse(text);
});
},
Text(
'Total - ${letterCount + letterCount2}',
)
不要忘记将其全部包装在StatefulWidget中,否则setState函数将无法工作。