Ошибка Flutter — auto_route _CustomNavigatorState

#flutter #dart #package #flutter-dependencies

#флаттер #dart #пакет #flutter-зависимости

Вопрос:

Я использую auto_route пакет для маршрутизации своего приложения, и до 2 дней назад все работало просто отлично, до сих пор. По какой-то причине я получаю следующую ошибку.

СИСТЕМА:

  • флаттер: 1.22
  • dart: 2.10.0
  • auto_route: ^ 0.6.7

ОШИБКА:

 ../../.pub-cache/hosted/pub.dartlang.org/custom_navigator-0.3.0/lib/custom_navigator.dart:60:7: Error: The non-abstract class '_CustomNavigatorState' is missing implementations for these members:
 - WidgetsBindingObserver.didPushRouteInformation
Try to either
 - provide an implementation,
 - inherit an implementation from a superclass or mixin,
 - mark the class as abstract, or
 - provide a 'noSuchMethod' implementation.

class _CustomNavigatorState extends State<CustomNavigator>
      ^^^^^^^^^^^^^^^^^^^^^
/opt/flutter/packages/flutter/lib/src/widgets/binding.dart:122:16: Context: 'WidgetsBindingObserver.didPushRouteInformation' is defined here.
  Future<bool> didPushRouteInformation(RouteInformation routeInformation) {
  

main.dart

 import 'package:device_simulator/device_simulator.dart';
import 'package:flutter/material.dart';
import 'package:auto_route/auto_route.dart';
import 'Test.gr.dart' as r;
void main() => runApp(MyApp());

const bool debugEnableDeviceSimulator = true;

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
    builder: ExtendedNavigator.builder<r.Router>(
      router: r.Router(),
      builder: (context, extendedNav) => DeviceSimulator(
        enable: debugEnableDeviceSimulator,
        child:
            Scaffold(body: extendedNav, backgroundColor: Colors.red ),
      ),
    ),
    );
  }
}
  

Кроме того, я должен упомянуть, что из-за некоторого обновления flutter, я думаю, теперь мне нужно использовать r.Router вместо just Router .

Test.dart

 import 'package:auto_route/auto_route_annotations.dart';

@MaterialAutoRouter(
  routes: <AutoRoute>[],
)
class $Router {}
  

А также, если здесь имеет какое-либо значение, это сгенерированный файл

Test.gr.dart

 // GENERATED CODE - DO NOT MODIFY BY HAND

// **************************************************************************
// AutoRouteGenerator
// **************************************************************************

// ignore_for_file: public_member_api_docs

import 'package:auto_route/auto_route.dart';

class Routes {
  static const all = <String>{};
}

class Router extends RouterBase {
  @override
  List<RouteDef> get routes => _routes;
  final _routes = <RouteDef>[];
  @override
  Map<Type, AutoRouteFactory> get pagesMap => _pagesMap;
  final _pagesMap = <Type, AutoRouteFactory>{};
}
  

У вас есть какие-либо идеи, что здесь происходит, или как я могу это исправить? Или, если я не могу это исправить, что я могу использовать вместо auto_route пакета, который предложит мне ту же выгоду?

Ответ №1:

я решил эту проблему, добавив некоторую функцию в библиотеку CustomNavigator :

 Future<bool> didPushRouteInformation(RouteInformation routeInformation) {
    return didPushRoute(routeInformation.location);
}
  

Ответ №2:

Найдите место, где генерируется ошибка. Добавьте следующую функцию ниже. Я сделал то же самое, и моя проблема решена.

 Future<bool> didPushRouteInformation(RouteInformation routeInformation) {
return didPushRoute(routeInformation.location);
}