如何从Future初始化ValueNotifier价值

时间:2020-01-10 15:31:06

标签: flutter dart flutter-provider

我需要从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);
    ),
  );
}

1 个答案:

答案 0 :(得分:2)

您可以使用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),
        );
      },
    ),
  );
}