【问题标题】:Flutter bloc - Getting data from DB asynchronouslyFlutter bloc - 从数据库异步获取数据
【发布时间】:2020-09-04 20:49:11
【问题描述】:

我正在使用 flutter_bloc 包使用 BLoC 架构制作应用程序,但我需要从数据库中获取数据,这是异步的,这意味着我无法使用数据库中的数据初始化 BLoC。有没有办法我可以做到这一点?我的 BLoC 类文本是

import 'package:countdown/database/utils.dart';
import 'package:countdown/events/countdown_event.dart';
import 'package:countdown/models/countdown.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

class HomeBloc extends Bloc<CountdownEvent, List<Countdown>> {
   @override
  // TODO: implement initialState
  List<Countdown> get initialState => DatabaseUtils.getCountdowns();


  @override
  Stream<List<Countdown>> mapEventToState(CountdownEvent event) {
  }
}

我知道这与This Question 非常相似,但该问题的答案没有任何非常有用的代码 sn-ps。

【问题讨论】:

  • 创建一个单独的异步函数并从 initState() 调用 if。
  • initState() 仍然必须返回一个 Future,这使得它成为父类的无效覆盖。
  • " 但我需要从数据库中获取数据,这是异步的," - 所以你需要阅读this amd this
  • initialState 必须是类型参数 State 的一个实例,在我的例子中是一个 List
  • 在这种情况下[] 有什么问题?

标签: flutter bloc


【解决方案1】:

创建一个单独的异步函数并从 initState() 调用 if。这是我的代码,你可以根据用途调用你的方法。

  @override
  HomeState get initialState {
    _checkLocationSettings();
    return InitialHomeState();
  }



_checkLocationSettings() async {
locationUpdateSetting = await repository.isLocationUpdateOn();}

【讨论】:

    猜你喜欢
    • 2021-03-18
    • 2020-02-07
    • 2021-08-27
    • 2020-07-30
    • 2020-07-14
    • 2021-05-03
    • 2020-09-05
    • 1970-01-01
    • 2020-06-01
    相关资源
    最近更新 更多