Значение textField (входное) продолжает исчезать после сохранения с помощью textEditingController и без него - PullRequest
0 голосов
/ 10 апреля 2020

Я пробовал это по-разному, но это просто не будет работать. Мне нравится, что текст ввода, написанный пользователем внутри текстового поля, остается после отправки / загрузки, поэтому, когда пользователь возвращается на страницу, текст должен быть там, и пользователь может удалить его вручную, не зная, что здесь пошло не так. заранее спасибо.

    class MondayScreen extends StatefulWidget {
  static final String id = 'monday_screen';

  @override
  _MondayScreenState createState() => _MondayScreenState();

}

TextEditingController _oneController = TextEditingController();
class _MondayScreenState extends State<MondayScreen> {

  String _alOne = '';


  _submit()  {
    Post post = Post(
      authorId: Provider.of<UserData>(context ,listen: false).currentUserId,
      timestamp: Timestamp.fromDate(DateTime.now()),
      alOne: _alOne,

    );
    DatabaseService.createPostMonday(post);

    setState(() {
_oneController.text;

    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.black,
        title: Text(
          'Monday Lunch',
          style: TextStyle(color: Colors.white),
        ),
        actions: <Widget>[
          FlatButton(
            child: Text(
              'Spara',
              style:
                  TextStyle(color: Colors.white, fontWeight: FontWeight.w600),
            ),
            onPressed: _submit,
            color: Colors.black,
          )
        ],
      ),
      body: SingleChildScrollView(
        child: Padding(
          padding: const EdgeInsets.only(top: 60.0),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Padding(
                padding: EdgeInsets.symmetric(horizontal: 30.0),
                child: TextField(
                  controller: TextEditingController(),
                  style: TextStyle(fontSize: 18.0),
                  decoration: InputDecoration(
                    labelText: 'Alternativ',
                  ),
                  onSubmitted: (input) => _alOne = input,


                ),
              ),

1 Ответ

0 голосов
/ 10 апреля 2020

У меня была похожая проблема при создании формы с использованием StatelessWidget.

Убедитесь, что вы используете StatefulWidget , а _oneController - это поле состояния. Ссылка https://flutter.dev/docs/cookbook/forms/validation

Передать _oneController в контроллер TextFormField

: _oneController

...