如何在大型项目中使用 main.dart 来组织架构?
How to organise architecture using main.dart in huge projects?
我正准备在 Dart 中创建合适的架构。我在 flutter 中制作了关于 bloc、cubit、providers 等的教程。
如何组织好main.dart
才能写得好?
即
我使用模型、存储库、服务、cubit、screens itd.,但是......一切都去 main.dart
。
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:pagination_app/data/repositories/post_repository.dart';
import 'package:pagination_app/presentation/post_screen.dart';
import 'bloc/posts/posts_cubit.dart';
import 'data/services/post_service.dart';
void main() {
runApp(PaginationApp(repository: PostsRepository(PostsService()),));
}
class PaginationApp extends StatelessWidget {
const PaginationApp({Key? key, required this.repository}) : super(key: key);
final PostsRepository repository;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: BlocProvider(
create: (context) => PostsCubit(repository),
child: PostsView(),
),
);
}
}
小项目我这样用就好了。你如何实现干净的代码,也许是某种全球供应商,我处理所有存储库然后启动到 main.dart
?
你的主张是什么?
您可以通过多种方式实现它。其中之一就是您刚才提到的那个——在 main.dart
中注入 repositories/services。更好的是 - 为了不弄乱这个文件,你可以在一个单独的文件中创建某种 bootstrap 函数来包装你的应用程序并注入依赖项。这样,您还可以通过在一个地方保存和管理依赖项来保持 main.dart
干净。 Here 您可以找到此类 bootstrap 函数的示例。
另一种方法是使用依赖注入 (DI) 包或服务定位器,您可以在其中定义所有依赖项,以后可以通过应用程序访问这些依赖项。例如,当使用 get_it 时,您可以创建一个专用文件,通过在单个文件中注册所有应用依赖项来启动服务定位器。这样,您不需要以任何方式包装您的应用程序,因为服务定位器基本上是一个全局可访问的单例对象,允许您解决依赖关系。
我正准备在 Dart 中创建合适的架构。我在 flutter 中制作了关于 bloc、cubit、providers 等的教程。
如何组织好main.dart
才能写得好?
即
我使用模型、存储库、服务、cubit、screens itd.,但是......一切都去 main.dart
。
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:pagination_app/data/repositories/post_repository.dart';
import 'package:pagination_app/presentation/post_screen.dart';
import 'bloc/posts/posts_cubit.dart';
import 'data/services/post_service.dart';
void main() {
runApp(PaginationApp(repository: PostsRepository(PostsService()),));
}
class PaginationApp extends StatelessWidget {
const PaginationApp({Key? key, required this.repository}) : super(key: key);
final PostsRepository repository;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: BlocProvider(
create: (context) => PostsCubit(repository),
child: PostsView(),
),
);
}
}
小项目我这样用就好了。你如何实现干净的代码,也许是某种全球供应商,我处理所有存储库然后启动到 main.dart
?
你的主张是什么?
您可以通过多种方式实现它。其中之一就是您刚才提到的那个——在 main.dart
中注入 repositories/services。更好的是 - 为了不弄乱这个文件,你可以在一个单独的文件中创建某种 bootstrap 函数来包装你的应用程序并注入依赖项。这样,您还可以通过在一个地方保存和管理依赖项来保持 main.dart
干净。 Here 您可以找到此类 bootstrap 函数的示例。
另一种方法是使用依赖注入 (DI) 包或服务定位器,您可以在其中定义所有依赖项,以后可以通过应用程序访问这些依赖项。例如,当使用 get_it 时,您可以创建一个专用文件,通过在单个文件中注册所有应用依赖项来启动服务定位器。这样,您不需要以任何方式包装您的应用程序,因为服务定位器基本上是一个全局可访问的单例对象,允许您解决依赖关系。