Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 使用Redux在小部件树外获取更新状态_Flutter_Redux_Flutter Dependencies - Fatal编程技术网

Flutter 使用Redux在小部件树外获取更新状态

Flutter 使用Redux在小部件树外获取更新状态,flutter,redux,flutter-dependencies,Flutter,Redux,Flutter Dependencies,是否可以从窗口小部件树外的存储中获取最新状态 在Provider中,您可以通过像这样调用Provider轻松地完成这项工作,并且如果有任何更改,状态将更新 Provider.of<WelcomeBloc>(context) Provider.of(上下文) 但当我打电话时: StoreProvider.of<AppState>(context).state.currentPage; StoreProvider.of(context).state.currentPag

是否可以从窗口小部件树外的存储中获取最新状态

在Provider中,您可以通过像这样调用Provider轻松地完成这项工作,并且如果有任何更改,状态将更新

Provider.of<WelcomeBloc>(context)
Provider.of(上下文)
但当我打电话时:

StoreProvider.of<AppState>(context).state.currentPage;
StoreProvider.of(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,
              ],
            ),
          );
        },
      ),
    );
  }
}

导入“包装:颤振/材料.省道”;
导入“包:flutter_redux/flutter_redux.dart”;
导入“package:redux/redux.dart”;
导入“包:ui_flatter/model/app_state.dart”;
导入“./footer.dart”;
导入“./viewWrapper.dart”;
导入“./header.dart”;
类欢迎扩展StatefulWidget{
@凌驾
_WelcomeState createState()=>\u WelcomeState();
}
类WelcomeState扩展了状态{
@凌驾
小部件构建(构建上下文){
int currentPage=StoreProvider.of(context).state.currentPage;//此生成方法只调用一次,因此我没有更新数据
打印(“当前页:$currentPage”);
返回脚手架(
正文:StoreConnector(
转换器:(存储)=>store.state,
生成器:(上下文、状态){
返回安全区(
子:堆栈(
儿童:[
ViewerRapper(),
页脚(
currentStep:state.currentPage,
总体步骤:3,
activeColor:Colors.grey[800],
不活动颜色:颜色。灰色[100],
),
欢迎光临,
],
),
);
},
),
);
}
}
提前感谢