我有一个TextField()
和一个控制器,我将其传递给TextField
控制器。我的问题是,每次我敲击键盘时,都会清除文本。
我遵循了以下问题:Flutter keyboard done button causes textfield content to vanish 这个问题可以解决我的问题,但没有任何解决方案。因此,我一无所知,将这个问题再次放在StackOverflow上。
我的代码:
class ReferralPage extends StatelessWidget {
final TextEditingController controller = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Container(
margin: EdgeInsets.only(top: 40.0, left: 16.0, right: 16.0),
child: Card(
color: Colors.white,
child: Padding(
padding: EdgeInsets.all(24.0),
child: TextField(
controller: controller,
cursorColor: Theme.of(context).primaryColor,
decoration: InputDecoration(hintText: 'Referral Code'),
)
)
),
decoration: BoxDecoration(boxShadow: [
new BoxShadow(color: Color.fromRGBO(173, 179, 191, 0.3), blurRadius: 20.0, offset: new Offset(0, 12))
])
)
);
}
}
如您所见,我的TextEditingController()
不在Widget build
内,所以没有发生这种情况的感觉。
我发现此问题的唯一解决方案是删除控制器,但我不想这样做,我想将控制器用于其他目的。我不知道为什么会这样。
任何帮助将不胜感激。谢谢:)
答案 0 :(得分:1)
您遇到此问题是因为您正在使用无状态窗口小部件。将您的无状态窗口小部件更改为有状态窗口小部件,以使您的控制器不会被重建。