嗨,我在 Flutter 应用程序中使用了Provider ( https://pub.dev/packages/provider )。现在我想使用提供者消费者将浮动操作按钮管理到脚手架中,以确保在我需要隐藏 FAB 按钮时不会重建脚手架。
现在我创建了一个简单的 FABProvider
class FABProvider extends ChangeNotifier {
FABProvider(bool initialValue) {
this._visible = initialValue;
}
bool _visible;
bool get visible => _visible;
void hide() {
if (_visible) {
_visible = false;
notifyListeners();
}
}
void show() {
if (!_visible) {
_visible = true;
notifyListeners();
}
}
}
我将所有 Scaffold 包装到 ChangeNotifierProvider 中:
return ChangeNotifierProvider<FABProvider>.value(
value: fabProvider,
child: Scaffold(
...
floatingActionButton: Consumer<FABProvider>(
child: createMyFAB(),
builder: (context, provider, child) {
if (provider.visible) {
return child;
} else {
return null; <-- Now I need to return null when the fab need to be hided otherwise the scaffold does not animate the FAB
}
},
),
...
)
...
我也尝试返回 Offstage() 或 Container(),但是当返回 Widget 而不是 null 时,Scaffold 不会为 fab 可见性设置动画。