Использование Flutter Checkbox () и получение начального значения из Firestore - PullRequest
0 голосов
/ 25 марта 2020

Я не опытный программист, и я не мог найти руководство, отсюда и этот вопрос. У меня есть рабочее решение, но я не уверен, что это хорошая практика.

Я использую флажок виджета () в форме (). Виджеты, такие как TextFormField () и DateTimeField (), имеют параметр с именем 'initialValue'. Флажок () не имеет.

Для TextFormField () и DateTimeField () я получил initialValue следующим образом:

 @override
  Widget build(BuildContext context) {
    final user = Provider.of<User>(context);

    return StreamBuilder<UnitDetails>(
      stream: DatabaseServices(uid: user.userUid, unitUid: widget.unitUid)
          .unitByDocumentID,
      builder: (context, unitDetails) {
        if (!unitDetails.hasData) return Loading();
        return Scaffold(
    etc

Флажок (value: residentialUnit,) не может иметь начальное значение, установленное внутри компоновщика :. Параметр 'value:' должен быть установлен в true или false перед компоновщиком: ie до получения значения из Firestore! Я решил это с помощью initState (). Дополнительный вызов Firestore и дополнительный код для этого одного виджета ввода.

@override
void initState() {
    super.initState();
    Firestore.instance
        .collection("units")
        .document(widget.unitUid)
        .snapshots()
        .listen((snapshot) {
            residentialUnit = snapshot.data['unitResidential'];
        });
}

Есть ли лучший способ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...