флаттер - как сохранить список выбранных переключателей в флаттере? - PullRequest
0 голосов
/ 07 февраля 2019

Мне удалось отобразить список RadioListTile на основе имеющихся у меня данных.см. мой код ниже:

class ShipFromItemList extends StatefulWidget {
  @override
  _ShipFromItemListState createState() => _ShipFromItemListState();
}

class _ShipFromItemListState extends State<ShipFromItemList> {
  ShippingAddress _radioValue;

  @override
  Widget build(BuildContext context) {
    return ScopedModelDescendant<MainModel>(builder: (context, child, model) {
      return ListView(shrinkWrap: true, children: createRadioListUsers(model));
    });
  }

  List<Widget> createRadioListUsers(MainModel model) {
    List<Widget> widgets = [];
    for (ShippingAddress shippingAddress in model.shipaddrsList) {
      widgets.add(Column(
        children: <Widget>[
          SizedBox(height: 10),
          Container(
            child: RadioListTile(
              value: shippingAddress,
              groupValue: _radioValue,
              title: Text(
                shippingAddress?.name ?? "",
                style: Theme.of(context).textTheme.title.copyWith(fontSize: 15),
              ),
              subtitle: Text(
                shippingAddress?.address ?? "",
                style:
                    Theme.of(context).textTheme.caption.copyWith(fontSize: 13),
              ),
              secondary: Text("14.728 mi",
                  style: Theme.of(context)
                      .textTheme
                      .caption
                      .copyWith(fontSize: 13)),
              onChanged: (currentUser) {
                print("Current User ${currentUser?.name}");
                setSelectedUser(currentUser);
              },
              selected: _radioValue == shippingAddress,
              activeColor: Colors.orange,
            ),
          ),
          SizedBox(height: 10),
          Divider(
            height: 0.0,
          ),
        ],
      ));
    }
    return widgets;
  }

  setSelectedUser(ShippingAddress shippingAddress) {
    setState(() {
      _radioValue = shippingAddress;
    });
  }
}

Но я хочу, чтобы, когда однажды вернется на страницу Select Radio, инициализация выбранного радио была последними данными (которые я сохраню в базе данных позже). Какие данные делатьЯ должен сохранить, чтобы сохранить последние данные, чтобы инициализировать выбранное радио?

1 Ответ

0 голосов
/ 07 февраля 2019

Вы должны сохранить значение _radioValue в sharedPrefences, используя этот пакет флаттера https://pub.dartlang.org/packages/shared_preferences,, что позволит вам снова вызвать значение после закрытия и повторного открытия приложения.sharedPrefences хранит только примитивные значения, такие как int и String, поэтому примите это во внимание.

...