Flutter 状态设置时可见性小部件未隐藏

Flutter 状态设置时可见性小部件未隐藏,flutter,Flutter,当用户在两个状态之间切换时,我会遇到很多可见性触发的问题。我的onboarding小部件在页面顶部有一个标题,但当用户导航到第二条路线时,我希望它离开并显示一个完整的出血容器 这是我的小部件: 库激活; 导入“dart:ui”; 进口“包装:颤振/材料.省道”; 类Step1扩展了无状态小部件{ @凌驾 小部件构建(构建上下文){ 返回文本(“步骤1”) } } 类Step2扩展了无状态小部件{ @凌驾 小部件构建(构建上下文){ 返回文本(“步骤2”) } } 类OnboardActivate

当用户在两个状态之间切换时,我会遇到很多可见性触发的问题。我的onboarding小部件在页面顶部有一个标题,但当用户导航到第二条路线时,我希望它离开并显示一个完整的出血容器

这是我的小部件:

库激活;
导入“dart:ui”;
进口“包装:颤振/材料.省道”;
类Step1扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回文本(“步骤1”)
}
}
类Step2扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回文本(“步骤2”)
}
}
类OnboardActivate扩展StatefulWidget{
@凌驾
OnBoardActivateEstate createState()=>新建OnBoardActivateEstate();
}
类OnboardActivateState扩展{
@凌驾
小部件构建(构建上下文){
bool _ishadervisible=true;
回程回程滤波器(
过滤器:ImageFilter.blur(sigmaX:10,sigmaY:10),
子项:列(子项:[
安全区(
孩子:可见度(
可见:_(不可见),
孩子:填充(
填充:仅限边缘设置(
排名:35,
左:35,
右:35,
底数:15,
),
子项:列(子项:[
划船(
mainAxisAlignment:mainAxisAlignment.end,
儿童:[
正文(
“第1步,共4步”。toUpperCase(),
风格:主题(上下文)
.文本主题
.副标题1
.copyWith(颜色:颜色。白色),
),
],
),
世界其他地区(儿童:[
正文(
“一个有趣的欢迎信息!”,
风格:Theme.of(context).textTheme.headline2,
),
]),
]),
),
),
),
扩大(
弹性:1,
子:容器(
填充:仅限边集(顶部:35,右侧:35,左侧:35),
边距:仅限边集(左:10,右:10,顶:10),
装饰:新盒子装饰(
颜色:颜色,白色,
borderRadius:仅限新的borderRadius(
左上角:常数半径。圆形(20.0),
右上角:常数半径。圆形(20.0),
),
),
孩子:领航员(
initialRoute:“/”,
onGenerateRoute:(路由设置){
WidgetBuilder;
开关(设置.名称){
案例“/”:
生成器=(BuildContext )=>Step1();
打破
案例“/步骤2”:
生成器=(BuildContext )=>Step2();
设置状态(){
_可见=假;
});
打破
}
返回MaterialPage路线(生成器:生成器,设置:设置);
},
),
),
),
]),
);
}
}
下面是UI设计本身的一个示例。左侧是显示
/
根目录时的状态。右侧显示
/step2
时。我对UI区域内的内容使用导航器,它之外的内容在所有其他路径上都是装饰性的。在步骤1之后,尽管我希望标题不可见。最终,我很想让它动画化,但现在,弄清楚为什么可见小部件没有效果是很重要的。我在想也许我得重新渲染


\u即使设置不同,可见的
也是相同的。只需将它移出
build
方法,让它保留最后一个值

class OnboardActivateState extends State<OnboardActivate> {

  bool _isHeaderVisible;

  initState(){
    _isHeaderVisible = true;
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    //  bool _isHeaderVisible = true; <== REMOVE
    ...
  
类OnboardActivateState扩展状态{
bool_是可见的;
initState(){
_可见=真;
super.initState();
}
@凌驾
小部件构建(构建上下文){

//bool _ishadervisible=true;lol-wow。现在我觉得自己很傻。很抱歉,我刚读过构建方法,现在我对它的理解好多了。这更有意义。谢谢。