Форма создания Flutter на основе нескольких страниц

Мне нужно создать форму на основе нескольких страниц, проверить и отправить по окончании. Как я могу реализовать что-то подобное, используя пакеты provider и flutter bloc? Я пробовал создать такую ​​форму, используя хранилище, но считаю, что это плохая практика. У кого-нибудь есть идеи? Спасибо раньше!


person Andreas Hunter    schedule 05.01.2021    source источник


Ответы (1)


Я предлагаю вам использовать плагин flow_builder (Link), который будет обрабатывать поток за вас на основе государство. Пример в репозитории - это то, что вам нужно. Сначала вы создадите модель, которая будет использоваться в качестве состояния

class Profile {
  const Profile({this.name, this.age, this.weight});

  final String name;
  final int age;
  final int weight;

  Profile copyWith({String name, int age, int weight}) {
    return Profile(
      name: name ?? this.name,
      age: age ?? this.age,
      weight: weight ?? this.weight,
    );
  }
}

Затем вы можете использовать виджет FlowBuilder следующим образом:

FlowBuilder<Profile>(
  state: const Profile(),
  onGeneratePages: (profile, pages) {
    return [
      MaterialPage(child: NameForm()),
      if (profile.name != null) MaterialPage(child: AgeForm()),
    ];
  },
);

Затем вы можете обновить виджет на страницах формы, используя:

context.flow<Profile>().update((profile) => profile.copyWith(name: _name));
person Amir_P    schedule 05.01.2021
comment
эй, приятель, мне неясно одно. Куда я должен загрузить данные? В этом случае у меня есть форма с несколькими страницами. Могу ли я загружать данные в ProfileFlow или в ProfileNameForm? - person AFetter; 26.06.2021
comment
Мне непонятно, что и зачем вы загружаете. Вы можете задать вопрос подробно и прокомментировать ссылку здесь. Я проверю позже. @AFetter - person Amir_P; 26.06.2021