Navigator上的Flutter Provider注入多个对象

问题描述 投票:0回答:1

Flutter的新手,我的应用程序顶部有Event类的Provider。是否可以在Navigator构建器中注入多个对象,例如MapBox(events.itmaps,events.maps)?

class Events {
  final String site, fb, itmaps, maps;
  Events({this.site, this.fb, this.itmaps, this.maps});
}
void main() {
  final events = Events();
  runApp(
    Provider<Events>.value(
      value: events,
      child: MyApp(),
    ),
  );
}
onPressed: () {
  Navigator.of(context).push(
    MaterialPageRoute(
       builder: (context) => MapBox(events.itmaps),
      ),
    );
  }
flutter routes provider visualstatemanager
1个回答
0
投票

据我了解,您有一些概念上的误解!。我将描述两种情况,希望其中一种可以满足您的要求。

使用MultiProvider注入许多依赖关系(类/对象/存储)正如https://pub.dev/packages/provider所描述的那样:

MultiProvider(
  providers: [
    Provider<Something>(create: (_) => Something()),
    Provider<SomethingElse>(create: (_) => SomethingElse()),
    Provider<AnotherThing>(create: (_) => AnotherThing()),
  ],
  child: someWidget,
)

将参数/属性传递到小部件

尽管使用了描述和关键字,但通过查看代码,我可以猜测您想将第二个或多个输入/参数/属性传递给屏幕小部件。每个小部件输入都是一个类构造函数参数。因此,您只需要在MapBox类的构造函数中声明所需的参数即可。

class MapBox extends StatelessWidget {

    EventModel firstInput;
    OtherEventModel secondInput;

    MapBox(this.firstInput, this.secondInput);

    .
    .
    .
}
© www.soinside.com 2019 - 2024. All rights reserved.