Поставщик Flutter на Navigator вводит несколько объектов - PullRequest
0 голосов
/ 07 марта 2020

Впервые на Flutter у меня есть провайдер поверх моего приложения с классом Events. Есть ли способ внедрить более одного объекта в построитель навигатора, например, 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),
      ),
    );
  }

1 Ответ

0 голосов
/ 07 марта 2020

Как я понял, у вас есть некоторые концептуальные недоразумения !. Я опишу два сценария ios, надеюсь, один из них будет соответствовать вашему требованию.

Использование MultiProvider для внедрения многих зависимостей (классов / объектов / хранилищ)
As https://pub.dev/packages/provider описано, что это будет выглядеть так:

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


Передача аргументов / реквизитов в виджеты

Несмотря на описания и ключевые слова вы использовали, глядя на ваш код, я могу догадаться, что вы хотите передать второй или более input / arguments / props вашему экранному виджету. Каждый входной элемент виджета является аргументом конструктора класса. Так что вам нужно просто объявить параметры желания в конструкторе вашего MapBox класса.

class MapBox extends StatelessWidget {

    EventModel firstInput;
    OtherEventModel secondInput;

    MapBox(this.firstInput, this.secondInput);

    .
    .
    .
}
...