【问题标题】:How to inject dataProvider in repository using bloc pattern如何使用 bloc 模式在存储库中注入 dataProvider
【发布时间】:2020-12-24 02:06:17
【问题描述】:

按照bloc官方repository模式,建议使用multi-dataProvider的repository,但是如何在repository中注入dataProvider呢?

class Repository {
    final DataProviderA dataProviderA;  // What's the way to init the DataProviderA in the repository.
    final DataProviderB dataProviderB;

    Future<Data> getAllDataThatMeetsRequirements() async {
        final RawDataA dataSetA = await dataProviderA.readData();
        final RawDataB dataSetB = await dataProviderB.readData();

        final Data filteredData = _filterData(dataSetA, dataSetB);
        return filteredData;
    }
}

【问题讨论】:

    标签: flutter flutter-bloc


    【解决方案1】:

    您可以关注官方天气示例https://bloclibrary.dev/#/flutterweathertutorial?id=repository
    你可以在main() init Repository 和注入dataProviderAdataProviderB
    代码sn-p

    class Repository {
      final DataProviderA dataProviderA;
      final DataProviderB dataProviderB;
    
      Repository({@required this.dataProviderA, @required this.dataProviderB})
          : assert(dataProviderA != null && dataProviderB != null);
    
      Future<Data> getAllDataThatMeetsRequirements() async {
        final RawDataA dataSetA = await dataProviderA.readData();
        final RawDataB dataSetB = await dataProviderB.readData();
    
        final Data filteredData = _filterData(dataSetA, dataSetB);
        return filteredData;
      }
    }
    
    void main() {
      Bloc.observer = SimpleBlocObserver();
    
      final Repository repository = Repository(
        dataProviderA: DataProviderA(),
        dataProviderB: DataProviderB(),
      );
    
      runApp(App(repository: repository));
    }
    
    class App extends StatelessWidget {
      final Repository repository;
    
      App({Key key, @required this.repository})
          : assert(repository != null),
            super(key: key);
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Weather',
          home: BlocProvider(
            create: (context) => YourBloc(repository: repository),
            child: YourMainEntry(),
          ),
        );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-21
      • 2020-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 2016-06-21
      相关资源
      最近更新 更多