gpt4 book ai didi

flutter - 如何将底部工作表位置设置为顶部

转载 作者:行者123 更新时间:2023-12-03 13:29:51 24 4
gpt4 key购买 nike

我想创建一个具有多个控件(如文本输入和按钮)的可扩展容器。

所以我已经实现了一个底部工作表,但我想将此位置设置在顶部。

代码:

Widget build(BuildContext context) {
return Container(
child: Center(
child: RaisedButton(
child: Text('Show Buttom Sheet'),
onPressed: () {
showModalBottomSheet(context: context, builder: (context){
return StreamBuilder(
stream: controller.stream,
builder:(context,snapshot) => GestureDetector(
onVerticalDragUpdate: (DragUpdateDetails details)
{
position = MediaQuery.of(context).size.height-
details.globalPosition.dy;
print('position dy = ${position}');

position.isNegative?Navigator.pop(context)

:controller.add(position);

},
behavior: HitTestBehavior.translucent,
child:
Container(
color: Colors.red,
height: snapshot.hasData ? snapshot.data:200.0,
width: double.infinity,
child: Text('Child'),
)),
);

});

}),
),
);
}

最佳答案

看着Material Design reference for Bottom Sheets它确实表明使用符合人体工程学,这意味着它应该在底部,因为它更容易用拇指触及(使用手机时)。似乎没有其他“Top Sheets”的例子,这意味着有更好的方法来处理位于屏幕顶部的按钮的点击。例如,在 Gmail 中,单击您的头像会生成一个位于按钮下方的卡片。

话虽如此,这是创建“顶板”的一种方法:

IconButton(
icon: Icon(Icons.star),
onPressed: () {
return showGeneralDialog(
context: context,
barrierDismissible: true,
transitionDuration: Duration(milliseconds: 500),
barrierLabel: MaterialLocalizations.of(context).dialogLabel,
barrierColor: Colors.black.withOpacity(0.5),
pageBuilder: (context, _, __) {
return Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width,
color: Colors.white,
child: Card(
child: ListView(
shrinkWrap: true,
children: <Widget>[
ListTile(
title: Text('Item 1'),
onTap: () => Navigator.of(context).pop('item1'),
),
ListTile(
title: Text('Item 2'),
onTap: () => Navigator.of(context).pop('item2'),
),
ListTile(
title: Text('Item 3'),
onTap: () => Navigator.of(context).pop('item3'),
),
],
),
),
),
],
);
},
transitionBuilder: (context, animation, secondaryAnimation, child) {
return SlideTransition(
position: CurvedAnimation(
parent: animation,
curve: Curves.easeOut,
).drive(Tween<Offset>(
begin: Offset(0, -1.0),
end: Offset.zero,
)),
child: child,
);
},
);
}
);

关于flutter - 如何将底部工作表位置设置为顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56440920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com