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(() {
                        });
                    },
                ),
            ),
        ),
    ]
),