Флаттер - передача данных от ребенка к родителю и другому ребенку - PullRequest
0 голосов
/ 31 января 2020

У меня есть класс Restrictions и 3 дочерних элемента.

Я хочу передать данные из класса CountryDropDown (и из класса FieldDropDown, который выглядит почти одинаково, и из класса DateSelector, но может быть позже) в Restrictions, а затем в UserOffers (с обновлением List нажатием кнопки).

Пока я могу только определить переменную в классе Restrictions и передать ее следующим образом. All on Strings.

Класс ограничений:

  String selectedCountry = "Argentina"; 
             ...

                    children: <Widget>[
                Container(
                  margin: EdgeInsets.only(left: 20),
                  child: FieldDropDown(),
                ),
                Container(
                  padding: EdgeInsets.only(top: 10),
                  margin: EdgeInsets.only(left: 20),
                  child: CountryDropDown(
                  ), 
        ...

            Container(
              child: UserOffers(
                country: selectedCountry,
                field: selectedField,
                ),
            ), 

Класс UserOffers:

class UserOffers extends StatefulWidget {

  final String country;
  final String field;

  UserOffers({
    this.country,
    this.field
  }); ...

CountryDropDown класс:

  static String value;
  static String selected;

  @override
  void initState() {
    selected = _CountryDropDownState.selected;
    super.initState();
  } ...
   ... ]
        .map((label) => DropdownMenuItem(
              child: Text(label),
              value: label,
            ))
        .toList(),
    onChanged: (value) {
      setState(() => selected = value);
      print(selected);
    },
  ),
),
)

Заранее спасибо.

1 Ответ

1 голос
/ 31 января 2020

Похоже, что ваша проблема связана с управлением состоянием во флаттере. Есть несколько подходов, которые решают эту проблему, например:

  • унаследованный виджет
  • провайдер
  • blo c
  • redux

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

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