我正准备用飞镖建造合适的建筑。我制作关于整体,肘,供应商等方面的教程。
你如何提供良好的组织main.dart让它写得很好?
例如,我使用模型,存储库,服务,cubit,屏幕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?你的建议是什么?
发布于 2022-03-08 21:46:13
有多种方法可以实现它。其中之一就是您刚才提到的--在main.dart中注入存储库/服务。更好的是--不要弄乱这个文件,您可以在一个单独的文件中创建某种引导函数,它封装应用程序并注入依赖项。通过这种方式,您可以保持main.dart的清洁,方法是有一个保持和管理依赖关系的位置。这里,您可以找到这样的引导函数的示例。
另一种方法是使用依赖项注入(DI)包或服务定位器,其中定义了以后可以通过应用程序访问的所有依赖项。例如,在使用它时,可以通过在单个文件中注册所有应用程序依赖项来创建一个启动服务定位器的专用文件。这样,您就不需要以任何方式包装您的应用程序,因为服务定位器基本上是一个全局访问的单例对象,它允许您解决依赖关系。
https://stackoverflow.com/questions/71322727
复制相似问题