Получите обновленное состояние вне дерева виджетов с помощью Redux - PullRequest
0 голосов
/ 05 мая 2020

Возможно ли получить актуальное состояние из Магазина вне дерева виджетов?

В Provider вы можете легко сделать это, вызвав Provider, как это, и состояние обновится, если есть какие-либо изменения.

Provider.of<WelcomeBloc>(context)

Но когда я позвоню:

StoreProvider.of<AppState>(context).state.currentPage;

Я просто получаю текущее состояние, но оно не обновляется при изменениях (или я там что-то делаю не так)

В этом случае мне нужно использовать этот вызов в блоке, который обновляется при изменениях. .. что в моем примере не случай

пример

import 'package:flutter/material.dart';
import 'package:flutter_redux/flutter_redux.dart';
import 'package:redux/redux.dart';
import 'package:ui_flutter/model/app_state.dart';
import './footer.dart';
import './viewWrapper.dart';
import './header.dart';

class Welcome extends StatefulWidget {
  @override
  _WelcomeState createState() => _WelcomeState();
}

class _WelcomeState extends State<Welcome> {

  @override
  Widget build(BuildContext context) {
    int currentPage = StoreProvider.of<AppState>(context).state.currentPage; // This build method is invoked once only so I don't have update data
    print('current page: $currentPage');

    return Scaffold(
      body: StoreConnector<AppState, AppState>(
        converter: (store) => store.state,
        builder: (context, state) {
          return SafeArea(
            child: Stack(
              children: <Widget>[
                ViewerWrapper(),
                Footer(
                  currentStep: state.currentPage,
                  totalSteps: 3,
                  activeColor: Colors.grey[800],
                  inactiveColor: Colors.grey[100],
                ),
                WelcomeHeader,
              ],
            ),
          );
        },
      ),
    );
  }
}

Заранее спасибо!

...