我怎么能把一个可用的按钮叠在模式底板上的粗布上呢



我试图在底部ModalSheet的覆盖层上堆叠一个按钮,但我发现该按钮没有被触发,而是触发了驳回功能。

这里有一些代码(请注意,代码似乎把按钮夹在了飞镖垫上,所以请在IDE中尝试(。

您会注意到,当您单击"click 2"的下半部分时,事件会触发,但当您单击上半部分时会触发disse。

import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(
child: MyWidget(),
),
),
);
}
}
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return RaisedButton(
onPressed: () {
showModalBottomSheet(
context: context,
builder: (context) {
return Stack(
overflow: Overflow.visible,
children: [
Container(height: 200),
Positioned(
bottom: 190,
child: RaisedButton(
child: Text('Click 2'),
onPressed: () { print('Ok'); },
),
),
],
);
},
);
},
child: Text('Click'),
);
}
}

事实证明,这与showModalBottomSheet无关,因为可点击区域必须在堆栈内

https://github.com/flutter/flutter/issues/20798#issuecomment-611478841

我的解决方案是使用构建一个自定义模式表

Navigator.of(context).push(
PageRouteBuilder(
opaque: false, // for modal transparency
pageBuilder: (_, __, ___) => Material(color: Colors.black38, child: Stack(...)),
),
);

最新更新