Navigator 上的 Flutter Provider 注入多个对象

Flutter Provider on Navigator inject multiple objects

Flutter 新手,我在我的应用程序之上安装了 Provider,其中包含 class 事件。有没有办法在 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),
      ),
    );
  }

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

使用MultiProvider注入多个依赖(Classes/Objects/Stores)
正如 https://pub.dev/packages/provider 所描述的那样:

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


将 arguments/props 传递给小部件

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

的构造函数中声明所需参数
class MapBox extends StatelessWidget {

    EventModel firstInput;
    OtherEventModel secondInput;

    MapBox(this.firstInput, this.secondInput);

    .
    .
    .
}