项目的路由库是使用的go_router,对话框使用的是smartdialog
然后就遇到问题了,两个的初始化冲突,具体为
smartdialog初始化
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage,
// here
navigatorObservers: [FlutterSmartDialog.observer],
// here
builder: FlutterSmartDialog.init(),
);
}
}
go_router初始化
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
void main() => runApp(App());
class App extends StatelessWidget {
App({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp.router(
routerConfig: _router,
title: 'GoRouter Example',
);
}
final GoRouter _router = GoRouter(
routes: <GoRoute>[
GoRoute(
path: '/',
builder: (BuildContext context, GoRouterState state) {
return ScreenA();
},
),
GoRoute(
path: '/b',
builder: (BuildContext context, GoRouterState state) {
return ScreenB();
},
),
],
);
}
go_router初始化需要使用MaterialApp.router()方法,smartdialg需要在MaterialApp()中设置这个参数
navigatorObservers: [FlutterSmartDialog.observer],
这样问题就来了,MaterialApp.router()里面根本就没有这个参数,设置不了
navigatorObservers
咋整,这两个库我都很喜欢啊,那我就都得要,实现办法就是在MaterialApp.router()设置routerConfig的时候,不是传了一个自定义的router进去吗?在那里面设置navigatorObservers参数
这样这两个库就都能用啦