gpt4 book ai didi

flutter - 为什么我的TextFormField值在这里没有改变?

转载 作者:行者123 更新时间:2023-12-03 04:11:07 28 4
gpt4 key购买 nike

好吧,这可能是一个非常简单的问题,但是我正在开始,而且我找不到太多有关 flutter 的文档...

import 'package:flutter/material.dart';

class AutoChangeField extends StatefulWidget {
@override
_AutoChangeFieldState createState() => _AutoChangeFieldState();
}

class _AutoChangeFieldState extends State<AutoChangeField> {

Color _color = Colors.black;
String _newValue = 'write something';

@override
Widget build(BuildContext context) {
return TextFormField(
initialValue: _newValue,
cursorColor: _color,
onChanged: (val){
setState(() {
_newValue = "It changed!";
_color = Colors.red;
});
},
);
}
}

当您在TextFormField上写一些内容时,只是cursorColor会正确地交换为红色,但是它的值却不会。值(value)始终是“写点东西+(你写的东西)”,而不是“它变了!”。 :(

非常感谢。

最佳答案

您应该使用TextEditingController并将TextEditingController的initialValue设置为“写点东西”

像这样

class AutoChangeField extends StatefulWidget {
@override
_AutoChangeFieldState createState() => _AutoChangeFieldState();
}

class _AutoChangeFieldState extends State<AutoChangeField> {

Color _color = Colors.black;
TextEditingController controller = TextEditingController(text: "Write something");

@override
Widget build(BuildContext context) {
return TextFormField(
controller: controller,
cursorColor: _color,
onChanged: (val){
print(val);
controller.text = "It changed!";
setState(() {
_color = Colors.red;
});
},
);
}
}

注意:您不能同时使用 Controller 和initialValue。

关于flutter - 为什么我的TextFormField值在这里没有改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61343426/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com