Flutter navigatorkey + GlobalKey: "метод 'pushedName' был вызван в ноль" - PullRequest
0 голосов
/ 15 октября 2018

Я нашел решение «GlobalKey NavigatorState» для промежуточного программного обеспечения здесь , но не смог преодолеть ошибку «Метод« pushNamed »был вызван при нулевом значении».Затем я нашел это альтернативное решение, чтобы исправить проблему , используя отдельный класс и статическую переменную, но оно привело к той же ошибке. Все, что мне действительно нужно, это очень простой пример установки и как вызвать функцию "pushNamed" где-то еще.

Текущий код

инициализировать GlobalKey в отдельной папке:

class NavKey{
  static final navKey = new GlobalKey<NavigatorState>();
}

main.dart:

import 'package:eumag/assets/tools/route_navigation_constants.dart';

    ...

  @override
  Widget build(BuildContext context) {
    return StoreProvider<AppState>(
      store: store,
      child: MaterialApp(
        theme: ThemeData.dark(),
        navigatorKey: NavKey.navKey,
        routes: <String, WidgetBuilder>{
          ROUTE_LOGIN_PAGE: (BuildContext context) => LoginPage(store),
          ROUTE_MAIN_PAGE: (BuildContext context) => MainPage(store),
        },
        home: StoreBuilder<AppState>(
          builder: (BuildContext context, Store<AppState> store) =>
              LoginPage(store),
        ),
      ),
    );
  }

middleware.dart:

import 'package:eumag/assets/tools/route_navigation_constants.dart';

void appStateMiddleware (Store<AppState> store, action, NextDispatcher next) async{

  final navigatorKey = NavKey.navKey;

  if (action is UpdateRoomStatus){
    navigatorKey.currentState.pushNamed(ROUTE_MAIN_PAGE);
    store.dispatch(createSocketConnection);
  }
  next(action);
}
...