как заполнить данные в текстовом поле во флаттере - PullRequest
0 голосов
/ 14 октября 2019

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

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

Вот изображение

enter image description here

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Для более простого решения вы можете сохранить данные в Map<String, dynamic> (также может быть `Map>.

. В каждом TextFormField onSave или onChange вы можете установить значение Map. Пример:

TextFormField(
  // We set the initial value of the text field here
  initialValue: _map['firstName'] ?? '',
  onSave: (String value) {
    _map['firstName'] = value;
  }
)

Затем вы передадите Map на следующую страницу / экран.

Navigator.of(context).push(
  MaterialPageRoute(
   // We pass the Map to the next screen
   builder: (_) => MyNextScreen(data: _map),
  ),
);

Если вы используете pushReplacement и хотите перейти кмаршрут / экран с подробной информацией о компании, затем сразу после Map.

Navigator.of(context).push(
  MaterialPageRoute(
   // We pass the Map to the next screen
   builder: (_) => BusinessDetailScreen(data: _map),
  ),
);

ОБНОВЛЕНИЕ

TextField не имеет свойства initialValue, вы можете попробовать использовать TextFormField?

Вот пример, как заполнить (начальное значение) TextFormField

TextFormField(
          // We set the value of the TextFormField
          initialValue: _map['business_name'],
          onSaved: (value) {
            _map['business_name'] = value;
          },
        )
0 голосов
/ 14 октября 2019

Если я понимаю, что вы хотите добиться, чтобы, когда пользователь нажимал значок редактирования (карандаш), приложение переходило на другую страницу, где пользователь мог изменять поля данных, не так ли?

Чтобы отправить данные конструктору судьбы маршрутизатора, вы можете использовать:

Navigator.push(
  context,
  MaterialPageRoute(builder: (context) {
    return ResultPage(
      bmiResult: calc.calculateBMI(),
      resultText: calc.getResult()
    );
  }),
);

//In the destiny you can recover the information:
class ResultPage extends StatelessWidget {
  ResultPage( {@required this.bmiResult,@required this.resultText});
  final String bmiResult;
  final String resultText;
  @override
  Widget build(BuildContext context) {
   ...
...