如何使用 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