情況是當我在文本欄位上輸入的數字大于或等于a的值時,我想將提升的按鈕子文本更改為“確定”
樣本

class MyStatefulWidget extends StatefulWidget {
const MyStatefulWidget({Key? key}) : super(key: key);
@override
State<MyStatefulWidget> createState() => _MyStatefulWidgetState();
}
int a = 1654;
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
TextEditingController controller = TextEditingController();
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
a.toString(),
),
SizedBox(height: 20),
TextField(
controller: controller,
keyboardType: TextInputType.number,
),
SizedBox(height: 20),
ElevatedButton(
style: ElevatedButton.styleFrom(
minimumSize: Size(100, 50),
),
onPressed: () {},
child: Text('not ok'),
)
],
);
}
}
uj5u.com熱心網友回復:
監聽文本欄位上的更改事件并設定按鈕文本的狀態
class MyStatefulWidget extends StatefulWidget {
const MyStatefulWidget({Key? key}) : super(key: key);
@override
State<MyStatefulWidget> createState() => _MyStatefulWidgetState();
}
int a = 1654;
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
TextEditingController controller = TextEditingController();
String btnText = 'Not OK';
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
a.toString(),
),
const SizedBox(height: 20),
TextField(
controller: controller,
keyboardType: TextInputType.number,
onChanged: (String value) {
int _intValue = int.tryParse(value) ?? 0;
setState(() {
btnText = (_intValue >= a) ? "OK" : "Not OK";
});
},
),
const SizedBox(height: 20),
ElevatedButton(
style: ElevatedButton.styleFrom(
minimumSize: const Size(100, 50),
),
onPressed: () {},
child: Text(btnText),
)
],
);
}
}
uj5u.com熱心網友回復:
您將偵聽器添加到TextEditingController按鈕文本并使用狀態變數。
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
int a = 1654;
String buttonText = 'not ok';
late TextEditingController controller = TextEditingController()
..addListener(() {
int textNumber = int.tryParse(controller.text) ?? 0;
if (textNumber >= a) {
setState(() {
buttonText = "ok";
});
} else {
setState(() {
buttonText = "not ok";
});
}
});
并使用buttonText
ElevatedButton(
onPressed: () {},
child: Text(buttonText),
更多關于TextEditingController
uj5u.com熱心網友回復:
您可以使用 TextField 的 onChanged 屬性。
String buttonText = 'no';
TextFied(
onChanged: (value){
if(value >= a){
setState((){
buttonText = 'ok';
});
}
}
)
uj5u.com熱心網友回復:
請進行如下更改。
添加按鈕標題文本變數,如下所示:
String buttonText = "NOT OK";
使用以下代碼更新您的TextField
TextField(
controller: controller,
onChanged: (value){
if((double.tryParse(value) ?? 0) > a){
setState((){
buttonText = "OK";
});
}else{
setState((){
buttonText = "NOT OK";
});
}
},
keyboardType: TextInputType.number,
),
使用以下代碼更新您的ElevatedButton
ElevatedButton(
style: ElevatedButton.styleFrom(
minimumSize: Size(100, 50),
),
onPressed: () {},
child: Text(buttonText),
)
這里在TextField的onChanged方法中添加了完整的邏輯
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/494756.html
