#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);
}