Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何使下拉按钮创建的列表形状为圆形?_Flutter_Dart_Flutter Layout - Fatal编程技术网

Flutter 如何使下拉按钮创建的列表形状为圆形?

Flutter 如何使下拉按钮创建的列表形状为圆形?,flutter,dart,flutter-layout,Flutter,Dart,Flutter Layout,我有一个下拉按钮,它有圆形的边缘。现在,如何使单击下拉列表时弹出的列表也具有圆角边 下拉列表的图像: 单击下拉列表时弹出的列表图像(我想使这些边像我的下拉按钮一样圆整): 我的代码: 返回主题( 数据:主题数据(画布颜色:cardBlueColor,亮度:亮度.暗), 子:容器( 宽度:MediaQuery.of(context).size.width/1.25, 孩子:卡片( 形状:RoundedRectangleBorder(borderRadius:borderRadius.circu

我有一个下拉按钮,它有圆形的边缘。现在,如何使单击下拉列表时弹出的列表也具有圆角边

下拉列表的图像:

单击下拉列表时弹出的列表图像(我想使这些边像我的下拉按钮一样圆整):

我的代码:

返回主题(
数据:主题数据(画布颜色:cardBlueColor,亮度:亮度.暗),
子:容器(
宽度:MediaQuery.of(context).size.width/1.25,
孩子:卡片(
形状:RoundedRectangleBorder(borderRadius:borderRadius.circular(15.0)),
颜色:卡片蓝色,
标高:8.0,
子项:DropdownButtonHideUnderline(
孩子:ButtonTheme(
形状:RoundedRectangleBorder(borderRadius:borderRadius.circular(15.0)),
alignedDropdown:正确,
孩子:下拉按钮(
立面图:8,
图标:图标(图标。键盘箭头向下),
值:_dateSelected,
提示:AutoSizeText(NA_FLIGHT_PAGE_下拉列表,样式:TextStyle(颜色:白色,),textAlign:textAlign.center,),
isDense:错,
onChanged:(字符串newValue){
设置状态(){
_dateSelected=newValue;
dropdownMap=_getDropdownMap(快照);
});
},
项目:dropdownList.map((键){
返回下拉菜单项(
值:key.toString(),
子项:AutoSizeText(key.toString(),样式:TextStyle(颜色:白色,),textAlign:textAlign.center,),
);
}).toList(),
),
),
)
)
)
);
我所尝试的:

// adding a shape to the button theme
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(15.0))
//使用具有半径的容器并使画布透明
数据:主题数据(画布颜色:透明,亮度:亮度.暗),
//省略代码
返回下拉菜单项(
值:key.toString(),
子:容器(
装饰:框装饰(颜色:cardBlueColor,borderRadius:borderRadius.all(半径.圆形(10))),
子项:AutoSizeText(key.toString(),样式:TextStyle(颜色:白色,),textAlign:textAlign.center,),
) 
);
建议使用透明画布颜色方法的容器图像:


首先,我认为您需要将
主题数据.canvasColor
更改为透明。然后试着做一些类似的事情:

项目:[
下拉菜单项(
子:容器(
装饰:盒子装饰(
颜色:颜色。绿色,
borderRadius:仅限borderRadius(
左上:半径。圆形(15.0),
右上角:半径。圆形(15.0),
),
),
),
),
下拉菜单项(
子:容器(
装饰:盒子装饰(
颜色:颜色。绿色,
),
),
),
下拉菜单项(
子:容器(
装饰:盒子装饰(
颜色:颜色。绿色,
borderRadius:仅限borderRadius(
左下角:半径。圆形(15.0),
右下角:半径。圆形(15.0),
),
),
),
),
],

因此,第一个项目在顶部圆角,最后一个项目在底部圆角,这可能是一种更优雅的方法,但它的工作原理应该是相同的。

DropdownButton中有一个名为elevation的属性需要设置为0以避免阴影

DropdownButton<String>(
    elevation: 0,
)
下拉按钮(
海拔:0,
)

我能够像这样为下拉菜单列表创建圆角

我是这样做的

我从added to
(添加到
)下拉菜单
小部件的构建方法中复制了
下拉列表
小部件代码

您可以在存储库中下载代码,并将代码从一行更改到另一行

child:ClipRRect(
borderRadius:borderRadius.all(半径圆形(20)),
孩子:定制油漆(
油漆工:油漆工(
颜色:widget.dropdownColor??主题.of(context).canvasColor,
标高:路线标高,
selectedIndex:route.selectedIndex,
调整大小:_调整大小,
//此偏移量作为回调而不是值传递,因为它必须
//在绘制时(布局后)检索,而不是在构建时检索。
getSelectedItemOffset:()=>
route.getItemOffset(route.selectedIndex),
),
孩子:语义学(
scopesRoute:true,
名称路由:对,
明确的儿童节:是的,
标签:localizations.popupMenuLabel,
儿童:材料(
类型:MaterialType.transparency,
textStyle:route.style,
子:滚动配置(
行为:常量DropdownScrollBehavior(),
子:滚动条(
子:ListView(
控制器:widget.route.scrollController,
填充:kmateriallistadding,
收缩膜:对,
儿童:儿童,,
),
),
),
),
),
),
),
同时删除行与行之间的导入并添加此行

import 'package:flutter/material.dart'
hide
    DropdownButton,
    DropdownButtonFormField,
    DropdownButtonHideUnderline,
    DropdownMenuItem;
确保将
BorderRadius
设置为所需的大小,如果要制作循环列表,请查看并将
ClipRRect
更改为
ClipOval


当你从这个修改过的文件中导入这个
下拉列表
小部件时,还要确保你
隐藏
下拉列表
或者
包:flatter/material.dart.dart中的其他相关小部件。

它不起容器的作用,只是在单词周围缠绕(后期更新),留下空白,我用
BorderRadius对它进行了测试。所有的
我认为如果你在方框中添加填充物,它仍然可以工作。你找到解决方案了吗?这个