Flutter - запуск StreamSubscription onData вручную - PullRequest
0 голосов
/ 21 мая 2019

Я использую шагомер плагин во флаттере, и я заметил одну вещь: когда я открываю приложение через некоторое время, отображаемое количество шагов не обновляется, пока я не выполню шаги, пока приложение открытодля того, чтобы вызвать метод onData StreamSubscription.Это не проблема setState, поскольку она обновляется каждую секунду.

Ниже приведена часть того, что я делал до этого:

class _MyScreenState extends State<MyScreen>
    with AutomaticKeepAliveClientMixin<Page1>, WidgetsBindingObserver {
  StreamSubscription _subscription;
  final Store<AppState> store;

  _MyScreenState(this.store, this.pedometer);

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
    setUpPedometer();

}

  void setUpPedometer() {
    _subscription = pedometer.stepCountStream
        .listen(_onData, onError: _onError, cancelOnError: true);
  }

  @override
  Future<Null> didChangeAppLifecycleState(AppLifecycleState state) async {
    if (state == AppLifecycleState.resumed) {
      await resumeCallBack();
    }
  }

  resumeCallBack() {
     // here, I am looking for a way to trigger onData method
  }

  void _onData(int stepCountValue) async {
    print("stepCountValue : ${stepCountValue}");
    store.dispatch(UpdateStepsAction(
        steps: stepCountValue));
}

}
...