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

关于flutter - 如何从Future初始化ValueNotifier值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59684625/

10-10 14:39