使用 Switch 时的 showModalBottomSheet 堆叠
showModalBottomSheet stacking when using a Switch
我试图在我的应用程序的登录屏幕上显示隐私政策横幅。
每当我单击开关时,另一个 ModalBottomSheet 就会堆叠在另一个上面。
我试过在单独的 Statefullwidget 中提取按钮,没有任何变化。
有什么建议、提示或想法吗?
var setting = Provider.of<SettingProvider>(context);
WidgetsBinding.instance!.addPostFrameCallback((timeStamp) {
if (setting.data == false) {
showModalBottomSheet(
barrierColor: Colors.blueGrey.withOpacity(0.1),
isDismissible: false,
context: context,
builder: (BuildContext context) {
return Container(
padding: EdgeInsets.fromLTRB(30, 10, 30, 0),
height: 300,
child: ListView(
children: [
Center(
child: Text(
'Datenschutz',
style: TextStyle(
fontFamily: 'Caveat',
fontSize: 25,
),
),
),
Text(
'Description.',
style: TextStyle(fontSize: 10),
textAlign: TextAlign.justify,
),
SwitchListTile(
title: Text(
'I agree.',
style: TextStyle(fontSize: 10),
),
value: setting.initdata,
onChanged: (bool value) {
setting.changeInitData(value);
}),
SizedBox(
height: 10,
),
ElevatedButton(
onPressed: () {
if (setting.initdata == true) {
setting.changeData(setting.initdata);
Navigator.pop(context, 'Sichern');
} else {
Fluttertoast.showToast(
msg:
'Error.',
gravity: ToastGravity.TOP);
}
},
child: Text('Sichern')),
],
),
);
});
}
});````
我刚刚找到了一种解决方法。可能不是最优雅的方式,但它确实有效。
在保存隐私设置的按钮中,我使用了 Navigator.of(context).pushReplacementNamed(LogInScreen.routeName);
而不是 Navigator.pop
。
按下 Switch
时模态框仍然堆叠,但用户不必点击多个模态框..
我试图在我的应用程序的登录屏幕上显示隐私政策横幅。 每当我单击开关时,另一个 ModalBottomSheet 就会堆叠在另一个上面。
我试过在单独的 Statefullwidget 中提取按钮,没有任何变化。
有什么建议、提示或想法吗?
var setting = Provider.of<SettingProvider>(context);
WidgetsBinding.instance!.addPostFrameCallback((timeStamp) {
if (setting.data == false) {
showModalBottomSheet(
barrierColor: Colors.blueGrey.withOpacity(0.1),
isDismissible: false,
context: context,
builder: (BuildContext context) {
return Container(
padding: EdgeInsets.fromLTRB(30, 10, 30, 0),
height: 300,
child: ListView(
children: [
Center(
child: Text(
'Datenschutz',
style: TextStyle(
fontFamily: 'Caveat',
fontSize: 25,
),
),
),
Text(
'Description.',
style: TextStyle(fontSize: 10),
textAlign: TextAlign.justify,
),
SwitchListTile(
title: Text(
'I agree.',
style: TextStyle(fontSize: 10),
),
value: setting.initdata,
onChanged: (bool value) {
setting.changeInitData(value);
}),
SizedBox(
height: 10,
),
ElevatedButton(
onPressed: () {
if (setting.initdata == true) {
setting.changeData(setting.initdata);
Navigator.pop(context, 'Sichern');
} else {
Fluttertoast.showToast(
msg:
'Error.',
gravity: ToastGravity.TOP);
}
},
child: Text('Sichern')),
],
),
);
});
}
});````
我刚刚找到了一种解决方法。可能不是最优雅的方式,但它确实有效。
在保存隐私设置的按钮中,我使用了 Navigator.of(context).pushReplacementNamed(LogInScreen.routeName);
而不是 Navigator.pop
。
按下 Switch
时模态框仍然堆叠,但用户不必点击多个模态框..