我想创建一个带有圆角的持久性BottomSheet,但无法实现结果。我已经尝试过在链接“ How to create a modal bottomsheet with circular corners in Flutter?”中给出的代码,但是它实现了模式表。
我已经尝试将其用于持久工作表,但是没有运气。请帮我怎么做。
下面的代码可以正常工作并显示一个底页,但是拐角处不是圆的。
void _showBottomSheet() {
_scaffoldKey.currentState.showBottomSheet<void>((BuildContext context) {
final ThemeData themeData = Theme.of(context);
return new Container(
padding: const EdgeInsets.all(0),
width: double.infinity,
color: Colors.transparent,
decoration: BoxDecoration(
borderRadius: new BorderRadius.only(
bottomLeft: const Radius.circular(10.0),
bottomRight: const Radius.circular(10.0)),
),
child: new Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
BottomNavigationBar(
currentIndex: 0, // this will be set when a new tab is tapped
items: [
BottomNavigationBarItem(
icon: new Icon(Icons.share),
title: new Text('Share'),
),
BottomNavigationBarItem(
icon: Icon(Icons.bookmark),
title: Text('Bookmark')
)
],
onTap: (index)
{
if(index ==0)
{
final RenderBox box = context.findRenderObject();
Share.share('Hello this is a test',
sharePositionOrigin:
box.localToGlobal(Offset.zero) & box.size);
}
},
),
])
);
})
.closed.whenComplete(() {
if (mounted) {
setState(() { // re-enable the button
_showBottomSheetCallback = _showBottomSheet;
print ("_showBottomSheetCallback enable");
});
}
});
}
答案 0 :(得分:0)
您可以使用-ClipRRect
小部件。
void _showBottomSheet() {
_scaffoldKey.currentState
.showBottomSheet<void>((BuildContext context) {
final ThemeData themeData = Theme.of(context);
return Theme(
data: themeData.copyWith(canvasColor: Colors.orangeAccent,),
child: DecoratedBox(
decoration: BoxDecoration(color: Colors.transparent),
child: ClipRRect(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(22.0),
topRight: Radius.circular(22.0)),
child:
new Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
BottomNavigationBar(
currentIndex: 0, // this will be set when a new tab is tapped
items: [
BottomNavigationBarItem(
icon: new Icon(Icons.share),
title: new Text('Share'),
),
BottomNavigationBarItem(
icon: Icon(Icons.bookmark),
title: Text('Bookmark'))
],
onTap: (index) {
if (index == 0) {
final RenderBox box = context.findRenderObject();
// Share.share('Hello this is a test',
// sharePositionOrigin:
// box.localToGlobal(Offset.zero) & box.size);
}
},
),
]),
),
),
);
})
.closed
.whenComplete(() {
if (mounted) {
// setState(() { // re-enable the button
// _showBottomSheetCallback = _showBottomSheet;
// print ("_showBottomSheetCallback enable");
// });
}
});
}
输出: