如何将提供程序添加到第二个小部件树?

时间:2019-08-20 15:45:42

标签: flutter dart flutter-provider

我尝试按照此answer的方式将提供程序添加到第二个小部件树中(因此可以从函数中调用提供程序)。但是我得到了错误:

  

[VERBOSE-2:ui_dart_state.cc(148)]未处理的异常:错误:可以   在此之上找不到正确的提供者   页面小工具

请确保我在其他窗口小部件树中提供了正确的Model2,以便它具有祖先。

Future<void> _neverSatisfied() async {

final model2 = Provider.of<Model2>(context, listen: false);

  return showDialog<void>(
    context: context,
    barrierDismissible: false, 
    builder: (BuildContext context) {
      return 


    Provider.value(value: model2, child:


AlertDialog(
        title: Text('Rewind and remember'),
        content: SingleChildScrollView(
          child: ListBody(
            children: <Widget>[
              Text('You will never be satisfied.'),
              Text('You\’re like me. I’m never satisfied.'),
            ],
          ),
        ),
        actions: <Widget>[
          FlatButton(
            child: Text('Regret'),
            onPressed: () async {
await model2.getData();

              Navigator.of(context).pop();
            },
          ),
        ],
),
      );
    },
  );
}

同一StatefulWidget中的第一个小部件:

@override
  Widget build(BuildContext context) {
return ChangeNotifierProxyProvider<Model1, Model2>(
initialBuilder: (_) => Model2(),
  builder: (_, model1, model2) => model2
    ..string = model1.string,
),
  child: Consumer<Model2>(
    builder: (context, model2, _) =>

第二:

  @override
  Widget buildStep(BuildContext context) {
  Consumer<Model2>(
    builder: (context, model2, _) =>
...

   _neverSatisfied();

0 个答案:

没有答案