如何从 Future 初始化 ValueNotifier 值

How to initiate ValueNotifier value from Future

我需要从 http 结果启动我的 ChangeNotifierProvider<ValueNotifier>。我有这样的服务。

class AddressService {
  Future<Address> getMainAddress() async {
     return await callHttpHere();
  }
}

在我的 StatelessWidget 中:

Widget build(BuildContext context){
  return Scaffold(
    body: ChangeNotifierProvider<ValueNotifier<Address>>(
      create: (_) => ValueNotifier(IWantInitiateThisFrom_GetMainAddress);
    ),
  );
}

您可以使用 FutureBuilder:

Widget build(BuildContext context) {
  return Scaffold(
    body: FutureBuilder(
      builder: (context, AsyncSnapshot<Address> snapshot) {
        if (!snapshot.hasData) return Container();

        return ChangeNotifierProvider<ValueNotifier<Address>>(
          create: (_) => ValueNotifier(snapshot.data),
        );
      },
    ),
  );
}