use*_*882 3 dropdown flutter bottom-sheet flutter-layout
我有一个DropDown显示各种选项的。当前行为将选项显示为DropdownMenuItem.
如何将 切换DropdownMenuItem到BottomSheet显示 中所有选项的a DropDown?
当前代码:
DropdownButtonHideUnderline(
child: Container(
color: Color.fromRGBO(216, 216, 216, 0.33),
padding: const EdgeInsets.fromLTRB(32, 8, 16, 8),
child: DropdownButton<String>(
hint: Text("TEST DROPDOWN"),
items: <String>['A', 'B', 'C', 'D'].map((String value) {
// this crashes
return showModalBottomSheet(context: context, builder: (builder) {
return Container(
child: Text('Hello From Modal Bottom Sheet'),
padding: EdgeInsets.all(40.0),
);
});
// this works
return new DropdownMenuItem<String>(
value: value,
child: new Text(value),
);
}).toList(),
...
Run Code Online (Sandbox Code Playgroud)
编辑:我试图在下拉单击时显示类似于 iOS 日期选择器的内容。
如果您想自己制作,这是我制作的一个简单示例:
class ModalDropDown extends StatefulWidget {
@override
_ModalDropDownState createState() => _ModalDropDownState();
}
class _ModalDropDownState extends State<ModalDropDown> {
String _selected = '';
List<String> _items = ['A', 'B', 'C', 'D'];
@override
Widget build(BuildContext context) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
child: Text('Show Modal'),
onPressed: () => showModal(context),
),
Text('Selected item: $_selected')
],
),
);
}
void showModal(context){
showModalBottomSheet(
context: context,
builder: (context){
return Container(
padding: EdgeInsets.all(8),
height: 200,
alignment: Alignment.center,
child: ListView.separated(
itemCount: _items.length,
separatorBuilder: (context, int) {
return Divider();
},
itemBuilder: (context, index) {
return GestureDetector(
child: Text(_items[index]),
onTap: () {
setState(() {
_selected = _items[index];
});
Navigator.of(context).pop();
}
);
}
),
);
}
);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想要 Flutter 为 iOS 制作的选择器,您可以使用CupertinoPicker
| 归档时间: |
|
| 查看次数: |
9021 次 |
| 最近记录: |