gpt4 book ai didi

flutter_bloc - 为什么在 UI 而不是后端上声明存储库?

转载 作者:行者123 更新时间:2023-12-04 12:32:19 27 4
gpt4 key购买 nike

我正在尝试 Flutter,我在 github 上提出了许多项目,这些项目声明了存储库并将它们传递给 UI 端的 bloc。
为什么这是正确的做法,而不是在后端(在集团)?
例子:

class MyApp extends StatelessWidget {
final authenticationRepository = AuthenticationRepository();
final accountRepository = AccountRepository();

@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'My App',
debugShowCheckedModeBanner: false,
home: MultiRepositoryProvider(
providers: [
RepositoryProvider(create: (_) => authenticationRepository),
RepositoryProvider(create: (_) => accountRepository),
],
child: BlocProvider(
create: (_) => AuthenticationBloc(
authenticationRepository: authenticationRepository,
accountRepository: accountRepository,
),
child: Container(); // I removed the content here
),
),
),
);
}
}
谢谢

最佳答案

这不是关于“UI”方面,而是更多关于位于 UI 和 BLOC 之上的东西。请记住,在 Flutter 中一切都是 Widget。所以一些 Widget 需要实例化和处理存储库,根据我的经验,这很可能是最顶部的一个小部件。
你问“为什么不在集团中创建它?”
我们不这样做,因为这会违反控制反转/依赖反转原则,并使区块更难测试。我们想从外部注入(inject) blocs 依赖项,因此我们可以在单元测试中控制依赖项。
另一个原因可能是存储库在多个地方使用(例如,由多个不同的集团或同一集团的多个实例)。存储库实例可能不应该更改,而块是在小部件树中按需创建的。

关于flutter_bloc - 为什么在 UI 而不是后端上声明存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68137041/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com