如何使用 bloc 架构访问 flutter 中的配置文件
How to access config file in flutter using bloc architecture
在我的 Flutter 应用中,我将构建环境 dev 和 prod 分开。为此,我创建了一个 AppConfig class 扩展继承的小部件。
class AppConfig extends InheritedWidget {
AppConfig({
@required this.title,
@required this.clientId,
@required this.redirectUrl,
@required this.discoveryUrl,
@required this.scopes,
@required this.apiBaseUrl,
@required Widget child,
}) : super(child: child);
final String title;
final String clientId;
final String redirectUrl;
final String discoveryUrl;
final String apiBaseUrl;
final List<String> scopes;
static AppConfig of(BuildContext context) {
return context.dependOnInheritedWidgetOfExactType<AppConfig>();
}
@override
bool updateShouldNotify(InheritedWidget oldWidget) => false;
}
在视图中它工作正常,我可以像这样访问配置文件:_config = AppConfig.of(context);
我在我的应用程序中遵循 BLoC 架构模式。是否可以访问 bloc 或网络层上的配置文件?例如在我的 API 提供商中。问题是,我在这些 classes 中没有上下文。目标应该是这样的。
Future<dynamic> get(String url) async {
_config = AppConfig.of(context);
}
我怎样才能做到这一点?
AppConfig
可以是全局单例,您不需要为此使用 InheritedWidget
,而是使用普通飞镖 class。因此,您可以使用服务定位器来设置实例。然后从您应用程序的任何位置访问该实例,而无需上下文对象。
要设置服务定位器,您可以使用 this 包。文档中提供了详细示例。
我正在寻找相同的解决方案。如果找到请提供。
更新:检查这个link,它是单例的解决方案:
https://medium.com/flutter-community/flutter-ready-to-go-e59873f9d7de
在我的 Flutter 应用中,我将构建环境 dev 和 prod 分开。为此,我创建了一个 AppConfig class 扩展继承的小部件。
class AppConfig extends InheritedWidget {
AppConfig({
@required this.title,
@required this.clientId,
@required this.redirectUrl,
@required this.discoveryUrl,
@required this.scopes,
@required this.apiBaseUrl,
@required Widget child,
}) : super(child: child);
final String title;
final String clientId;
final String redirectUrl;
final String discoveryUrl;
final String apiBaseUrl;
final List<String> scopes;
static AppConfig of(BuildContext context) {
return context.dependOnInheritedWidgetOfExactType<AppConfig>();
}
@override
bool updateShouldNotify(InheritedWidget oldWidget) => false;
}
在视图中它工作正常,我可以像这样访问配置文件:_config = AppConfig.of(context);
我在我的应用程序中遵循 BLoC 架构模式。是否可以访问 bloc 或网络层上的配置文件?例如在我的 API 提供商中。问题是,我在这些 classes 中没有上下文。目标应该是这样的。
Future<dynamic> get(String url) async {
_config = AppConfig.of(context);
}
我怎样才能做到这一点?
AppConfig
可以是全局单例,您不需要为此使用 InheritedWidget
,而是使用普通飞镖 class。因此,您可以使用服务定位器来设置实例。然后从您应用程序的任何位置访问该实例,而无需上下文对象。
要设置服务定位器,您可以使用 this 包。文档中提供了详细示例。
我正在寻找相同的解决方案。如果找到请提供。
更新:检查这个link,它是单例的解决方案:
https://medium.com/flutter-community/flutter-ready-to-go-e59873f9d7de