Flutter中如何编程检测AppBar是否存在并将结果存入布尔变量
Flutter中如何编程检测AppBar是否存在并将结果存入布尔变量
嘿,这个问题其实有两种常见的解决思路,取决于你的使用场景:
1. 自己控制AppBar显示时,直接维护布尔变量
如果你是在自己的页面State类里决定要不要显示AppBar,那最省心的方式就是直接把这个状态存在布尔变量里,同时用它来控制AppBar的赋值。比如:
bool _hasAppBar = true; @override Widget build(BuildContext context) { return Scaffold( // 用变量控制AppBar的显示 appBar: _hasAppBar ? AppBar(title: const Text('我的页面')) : null, body: Center( child: Text('当前AppBar是否存在?$_hasAppBar'), ), ); }
之后如果需要切换AppBar的显示状态,只需要更新_hasAppBar的值并调用setState,这个变量始终能准确反映AppBar的存在状态,逻辑清晰又不用额外检测。
2. 子组件中检测父级Scaffold的AppBar
如果你是在子组件里,想要知道上层的Scaffold有没有设置AppBar,可以通过Scaffold.maybeOf(context)获取最近的Scaffold状态,再判断它的appBar属性是否不为null:
// 在子组件的build方法或其他逻辑中 bool hasAppBar = Scaffold.maybeOf(context)?.appBar != null;
这里用maybeOf而不是of,是为了避免在没有嵌套Scaffold的上下文里抛出异常——它会在找不到Scaffold时返回null,我们通过空安全操作符就能安全判断。
备注:内容来源于stack exchange,提问作者Linisha
相关产品推荐
相关产品推荐

