Drop down menu 如何在颤振中为dropdownbutton制作圆形边框?
如何添加圆角矩形边框? 下面的代码没有在屏幕上显示任何边框Drop down menu 如何在颤振中为dropdownbutton制作圆形边框?,drop-down-menu,flutter,spinner,flutter-layout,Drop Down Menu,Flutter,Spinner,Flutter Layout,如何添加圆角矩形边框? 下面的代码没有在屏幕上显示任何边框 Container(margin: EdgeInsets.only(top: 10.0, right: 10.0, left: 10.0), width: double.infinity, // decoration: ShapeDecoration( // shape: RoundedRectangleBorder( // borderRadius:BorderRadius.all(Radius.circular(5.0
Container(margin: EdgeInsets.only(top: 10.0, right: 10.0, left: 10.0),
width: double.infinity,
// decoration: ShapeDecoration(
// shape: RoundedRectangleBorder(
// borderRadius:BorderRadius.all(Radius.circular(5.0)),
// ),
child: DropdownButtonHideUnderline(
child: Container(
margin: EdgeInsets.only(
left: 10.0, right: 10.0),
child: new DropdownButton<UserTest>(...),
),
),
),
容器(边距:仅限边集(顶部:10.0,右侧:10.0,左侧:10.0),
宽度:double.infinity,
//装饰:造型装饰(
//形状:圆形矩形边框(
//borderRadius:borderRadius.all(半径.圆形(5.0)),
// ),
子项:DropdownButtonHideUnderline(
子:容器(
页边距:仅限边距(
左:10.0,右:10.0),
子项:新的下拉按钮(…),
),
),
),
您需要指定侧:
属性。默认情况下,它是BorderSide.none
decoration: ShapeDecoration(
shape: RoundedRectangleBorder(
side: BorderSide(width: 1.0, style: BorderStyle.solid),
borderRadius: BorderRadius.all(Radius.circular(5.0)),
),
),
容器(宽度:200.0,
身高:50.0,
装饰:盒子装饰(
边界半径:边界半径。圆形(7.0),
边框:边框。全部(颜色:颜色。蓝灰色)),
孩子:下拉按钮(
提示:文本(“消息”),
项目:[“消息传递”、“聊天”、“不再感兴趣”、“文档请求”].map((字符串值){
返回新的DropdownMenuItem(
价值:价值,
子项:新文本(值),
);
}).toList(),
一旦改变:({},
),
)
如果你想要的是这个
那给你
import 'package:flutter/material.dart';
class RoundedBorderDropdown extends StatelessWidget {
final List<String> _dropdownValues = [
"One",
"Two",
"Three",
"Four",
"Five"
]; //The list of values we want on the dropdown
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Rounded Border Button in AppBar'),
),
body: Center(
child: Container(
padding: EdgeInsets.symmetric(horizontal: 10.0),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15.0),
border: Border.all(
color: Colors.red, style: BorderStyle.solid, width: 0.80),
),
child: DropdownButton(
items: _dropdownValues
.map((value) => DropdownMenuItem(
child: Text(value),
value: value,
))
.toList(),
onChanged: (String value) {},
isExpanded: false,
value: _dropdownValues.first,
),
),
),
);
}
}
导入“包装:颤振/材料.省道”;
类RoundedBorderDropdown扩展了无状态小部件{
最终列表_下拉列表值=[
“一个”,
“两个”,
“三”,
“四”,
“五个”
];//下拉列表中所需的值列表
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“AppBar中的圆形边框按钮”),
),
正文:中(
子:容器(
填充:边缘组。对称(水平:10.0),
装饰:盒子装饰(
边界半径:边界半径。圆形(15.0),
边界:边界(
颜色:Colors.red,样式:BorderStyle.solid,宽度:0.80),
),
孩子:下拉按钮(
项目:_dropdownValues
.map((值)=>DropdownMenuItem(
子项:文本(值),
价值:价值,
))
.toList(),
onChanged:(字符串值){},
isExpanded:错,
值:_dropdownValues.first,
),
),
),
);
}
}
这是礼貌
快乐编码….对于表单字段变量,您可以使用通常用于输入文本字段的
大纲输入框
输入框
:
DropdownButtonFormField(
...
装饰:常量输入装饰(
边框:OutlineInputBorder(),
),
),
表单字段执行此操作的方式可以复制并与常规的下拉按钮一起使用:
输入装饰器(
装饰:常量输入装饰(边框:OutlineInputBorder()),
子项:DropdownButtonHideUnderline(
孩子:下拉按钮(
...
),
),
),
容器(
装饰:盒子装饰(
边界半径:边界半径。圆形(20.0),
边界:边界(
颜色:HexColor(“#C88A3D”),
宽度:3.0
)
),
子:容器(
装饰:新盒子装饰(边框半径:
边界半径。圆形(20.0),
颜色:颜色。白色,),
)
),
将其包裹在材质中并删除下拉框
Material(
borderRadius: BorderRadius.circular(40),
child: SizedBox(
width: MediaQuery.of(context).size.width / 1.08,
child: DropdownButton(
style: style.copyWith(color: Colors.black),
isExpanded: true,
underline: DropdownButtonHideUnderline(child: Container()),
value: value,
items: ...
),
)
列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
文本('性别:'),
输入装饰器(
装饰:输入装饰(
边框:大纲输入边框(边框半径:borderRadius.circular(5.0)),
contentPadding:EdgeInsets.all(10),
),
子项:DropdownButtonHideUnderline(
孩子:下拉按钮(
价值观:性别,
是的,
是的,
项目:[
DropdownMenuItem(子项:文本(“选择性别”),值:“”),
DropdownMenuItem(子项:文本(“男性”),值:“男性”),
DropdownMenuItem(子项:文本(“女性”),值:“女性”),
],
一旦更改:(newValue){
设置状态(){
});
},
),
),
),
]
),
您可以尝试将小部件包装在ClipRRect
中,如果我们想绕过打开的列表窗口(该窗口包含下拉按钮项),该怎么办?@aytunch您找到了查询的解决方案吗?@ChiragMittal不幸没有:(@aytunch这是不可能的。您必须构建自己版本的DropDownButton
。请查看小部件源代码。无法访问源代码中的\u DropdownRoute
。如果要删除下拉字段的下划线,只需将DropDownButton包装在“DropdownButtonHideUnderline”中即可小部件。我喜欢这个答案,因为它使用了DropdownButtonFormField,它有一个labelText属性,这将在选择一些值后保持输入标签可见,这从用户体验的角度来看是基本的。floatingLabelBehavior与输入装饰器的行为不正常。你知道为什么吗?我不确定-也许可以检查是否存在差异m字段实现?还可以将下划线:SizedBox.shrink()
添加到下拉按钮中以删除下划线。
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20.0),
border: Border.all(
color: HexColor('#C88A3D'),
width: 3.0
)
),
child: Container(
decoration: new BoxDecoration(borderRadius:
BorderRadius.circular(20.0),
color: Colors.white,),
)
),
Material(
borderRadius: BorderRadius.circular(40),
child: SizedBox(
width: MediaQuery.of(context).size.width / 1.08,
child: DropdownButton(
style: style.copyWith(color: Colors.black),
isExpanded: true,
underline: DropdownButtonHideUnderline(child: Container()),
value: value,
items: ...
),
)
Column(
crossAxisAlignment : CrossAxisAlignment.start,
children: <Widget> [
Text('Gender:'),
InputDecorator(
decoration: InputDecoration(
border: OutlineInputBorder(borderRadius: BorderRadius.circular(5.0)),
contentPadding: EdgeInsets.all(10),
),
child: DropdownButtonHideUnderline(
child: DropdownButton<String>(
value: gender,
isDense: true,
isExpanded: true,
items: [
DropdownMenuItem(child: Text("Select Gender"), value: ""),
DropdownMenuItem(child: Text("Male"), value: "Male"),
DropdownMenuItem(child: Text("Female"), value: "Female"),
],
onChanged: (newValue) {
setState(() {
});
},
),
),
),
]
),