文本输入值消失 Flutter

You*_*mad 1 dart flutter

当我键入文本并点击“确定”或单击后退按钮隐藏键盘时,输入的值消失

添加文本编辑控制器


class ChatCepBottomSheet extends StatelessWidget {

  final TextEditingController _cepController = TextEditingController();

  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        TextFormField(
          controller: _cepController,
        ),
        SizedBox(height: 32),
        Button(
          buttonText: 'Search',
          tapHandler: () {},
        )
      ],
    );
  }
}

Run Code Online (Sandbox Code Playgroud)

我预计输入的文本会保留在文本控制器中

小智 8

当键盘打开时,它会更改屏幕行为,当我们关闭它时,它会重新渲染屏幕,并且由于该字段由空构造函数再次初始化。

 TextEditingController _cepController = TextEditingController();
Run Code Online (Sandbox Code Playgroud)

有状态或无状态,如果您遇到键盘打开等此类问题,请尝试在final TextEditingController _cepController = TextEditingController();此类之外定义,这并不重要


Opr*_*mus 5

您尝试做的事情不适用于 Flutter。您正在使用一个stateless小部件并尝试保留状态(数据),这根据定义是不可能的。您需要使用stateful小部件重写您的类 - https://api.flutter.dev/flutter/widgets/StatefulWidget-class.html

请参阅下面的示例:

import 'package:flutter/material.dart';

class ChatCepBottomSheet extends StatefulWidget {
  @override
  _ChatCepBottomSheetState createState() => _ChatCepBottomSheetState();
}

class _ChatCepBottomSheetState extends State<ChatCepBottomSheet> {
  final TextEditingController _cepController = TextEditingController();

  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        TextFormField(
          controller: _cepController,
        ),
        SizedBox(height: 32),
        Button( //choose a button class or custom class
          buttonText: 'Search',
          tapHandler: () {},
        )
      ],
    );
  }
}````
Run Code Online (Sandbox Code Playgroud)