Flutter 中的单例模式
传统:
class RouterManager {// 单例模式static final RouterManager _instance = RouterManager._internal();factory RouterManager() {return _instance;}RouterManager._internal();
}
传递参数进行初始化时:
class RouterManager {// 私有静态实例,确保单例static RouterManager? _instance;// goRouter 是 final 变量,确保它只被初始化一次final GoRouter goRouter;// 私有构造函数RouterManager._internal(this.goRouter);// 工厂方法,返回 RouterManager 实例factory RouterManager({String initialLocation = '/'}) {_instance ??= RouterManager._internal(buildRouter(initialLocation));return _instance!;}static GoRouter buildRouter(String initialLocation) {return GoRouter(initialLocation: initialLocation,routes: [GoRoute(path: '/', builder: (context, state) => const SplashPage()),GoRoute(path: '/home', builder: (context, state) => const HomePage()),GoRoute(path: '/detail/:id',builder: (context, state) {final id = state.pathParameters['id']!;return DetailPage(id: id);},),],errorBuilder:(context, state) => Scaffold(body: Center(child: Text('Error: ${state.error}'))),);}
}