使用 Redux 获取 Widget 树外部的更新状态

2024-01-01

是否可以从 Widget 树之外的 Store 获取最新状态?

在 Provider 中,您可以通过像这样调用 Provider 轻松做到这一点,并且如果有任何更改,状态将更新。

Provider.of<WelcomeBloc>(context)

但是当我打电话时:

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

我只是得到当前状态,但它不会更新更改(或者我在那里做错了什么)

在这种情况下,我需要在一个块中使用该调用,该块会根据更改进行更新...在我的示例中不是这种情况

example

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,
              ],
            ),
          );
        },
      ),
    );
  }
}

提前致谢!


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Redux 获取 Widget 树外部的更新状态 的相关文章

随机推荐