Карта флаттера не передается между экранами при навигации по названному маршруту

Я передаю данные между экранами приложения. Я смог сделать это успешно со строками, но когда дело доходит до отправки карты списка, Navigator.pushNamed ничего не делает и не выдает никакой ошибки.

Мои именованные маршруты настроены, как показано ниже, в onGenerateRoute я беру настройки и передаю аргументы в HomePageResultsScreen и ItemPageProfileScreen:

Main.dart:

void main() => runApp(myApp());

class myApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          primaryColor: Colors.white,
        ),
        initialRoute: HomePageScreen.id,
        onGenerateRoute: (RouteSettings settings) {

        var routes = <String, WidgetBuilder>{
              HomePageScreen.id: (context) => HomePageScreen(),
              AddItemScreen.id: (context) => AddItemScreen(),
              AdvertiseScreen.id: (context) => AdvertiseScreen(),
              HomePageFilterScreen.id: (context) => HomePageFilterScreen(),
              HomePageResultsScreen.id: (context) => HomePageResultsScreen(settings.arguments),
              ItemPageProfileScreen.id: (context) => ItemPageProfileScreen(settings.arguments),
              ItemPageProfileSuggestUpdateScreen.id: (context) => ItemPageProfileSuggestUpdateScreen(),
              ItemPageWhereToBuyAddStoreToDatabaseScreen.id: (context) => ItemPageWhereToBuyAddStoreToDatabaseScreen(),
              ItemPageWhereToBuyMapScreen.id: (context) => ItemPageWhereToBuyMapScreen(),
              ItemPageWhereToBuyScreen.id: (context) => ItemPageWhereToBuyScreen(),
              MenuScreen.id: (context) => MenuScreen(),
              NotAvailableScreen.id: (context) => NotAvailableScreen(),
              TermsScreen.id: (context) => TermsScreen(),
        };
        WidgetBuilder builder = routes[settings.name];
        return MaterialPageRoute(builder: (ctx) => builder(ctx));

};

При открытии экрана я просто отправляю строку, которая отлично работает следующим образом:

Нажав на дартс файл:

onTap: () {Navigator.pushNamed(context, ItemPageProfileScreen.id, arguments: 'myStringData');
          },

и получить это так:

Получение файла дротика:

class ItemPageProfileScreen extends StatefulWidget {

  final String argument;
  ItemPageProfileScreen(this.argument);

Это все отлично работает. Но проблема возникает, когда я пытаюсь отправить ListMap через.

Поэтому я изменил свой навигатор, чтобы выдвинуть карту так:

Нажав на дартс файл:

   onTap: () {
                List<Map<String, String>> categoriesMap;
                categoriesMap.add({
                  "category": '',
                  "subCategory1": snapshot.data.documents[index].documentID,
                  "subCategory2": '',
                  "subCategory3": ''});
                Navigator.pushNamed(context, HomePageResultsScreen.id, arguments: categoriesMap);
              },

И затем я изменил принимающий файл, чтобы получить список следующим образом:

Получение файла дротика:

class HomePageResultsScreen extends StatefulWidget {

  List<Map<String, String>> arguments;
  HomePageResultsScreen(this.arguments);

Но когда я пытаюсь отправить список таким образом, новый экран не открывается, и ошибка не отображается. Что действительно странно, если я закомментирую ту часть, где я добавляю категории, и просто оставлю это как пустую карту списка, действие pushNamed работает, и откроется экран. Так что мне интересно, так ли это, как я инициализирую карту списка или есть что-то еще?

Спасибо за вашу помощь

0 ответов

Другие вопросы по тегам