Flutter 下拉选择颜色
颤振下拉列表是否仅支持文本 如果没有,那么我如何创建一个类似于此图像的下拉列表Flutter 下拉选择颜色,flutter,flutter-layout,Flutter,Flutter Layout,颤振下拉列表是否仅支持文本 如果没有,那么我如何创建一个类似于此图像的下拉列表 备注:我不想在图中实现滚动条,这是我能找到的最接近我想象的滚动条。您可以这样做: DropdownButton( onChanged: (value) { print(value); }, items: [ DropdownMenuItem( value: x, child
备注:我不想在图中实现滚动条,这是我能找到的最接近我想象的滚动条。您可以这样做:
DropdownButton(
onChanged: (value) {
print(value);
},
items: [
DropdownMenuItem(
value: x,
child: Container(
child: Text("Menu Item One"),
color: Colors.red,
height: 15,
width: MediaQuery.of(context).size.width),
),
),
DropdownMenuItem(
value: y,
child: Container(
child: Text("Menu Item Two"),
color: Colors.blue,
height: 15,
width: MediaQuery.of(context).size.width),
),
),
DropdownMenuItem(
value: z,
child: Container(
child: Text("Menu Item Three"),
color: Colors.green,
height: 15,
width: MediaQuery.of(context).size.width),
),
),
],
),
希望有帮助 您可以使用带有全宽的空容器,并提供背景色
导入'dart:io';
进口“包装:颤振/材料.省道”;
导入“package:image\u picker/image\u picker.dart”作为image\u picker;
导入“包:provider/provider.dart”;
进口“包装:简单颤振i18n/简单颤振i18n.dart”;
//导入“../i18n/i18n.dart”;
类下拉列表扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
最终语言=Provider.of(context).lang;
返回容器(
孩子:下拉按钮(
一旦改变:(d){},
项目:[
下拉菜单项(
子:容器(
宽度:100,
身高:10,
颜色:颜色,红色,
),
),
下拉菜单项(
子:容器(
宽度:100,
身高:10,
颜色:颜色,蓝色,
),
)
],
),
);
}
}
以下是我一直在用的东西。我们创建了一个下拉列表,就像上面的答案一样,只需使用填充颜色的容器填充下拉列表项。只需在列表中添加或删除您想要的任何颜色即可
import 'package:flutter/material.dart';
class ColorDropDown extends StatefulWidget {
final String label;
final Function(Color) onChanged;
final double height;
final double width;
ColorDropDown({
Key key,
this.onChanged,
this.height = 25,
this.width = 150,
this.label,
}) : super(key: key);
@override
_ColorDropDownState createState() => _ColorDropDownState();
}
class _ColorDropDownState extends State<ColorDropDown> {
Color value;
final List<Color> colors = [
Colors.red,
Colors.blue,
Colors.green,
Colors.yellow,
Colors.pink,
Colors.purple,
Colors.brown,
];
@override
Widget build(BuildContext context) {
return Container(
child: DropdownButton<Color>(
value: value,
hint: Text(widget.label ?? ''),
onChanged: (color) {
setState(() => value = color);
widget.onChanged(color);
},
items: colors
.map(
(e) => DropdownMenuItem(
value: e,
child: Container(
width: widget.width,
height: widget.height,
color: e,
),
),
)
.toList(),
));
}
}
导入“包装:颤振/材料.省道”;
类ColorDropDown扩展StatefulWidget{
最终字符串标签;
更改后的最终功能(颜色);
最终双倍高度;
最终双倍宽度;
颜色下拉列表({
关键点,
一旦改变了,
这个高度=25,
这个宽度=150,
这个标签,
}):super(key:key);
@凌驾
_ColorDropDownState createState();
}
类\u ColorDropDownState扩展状态{
颜色值;
最终列表颜色=[
颜色,红色,
颜色,蓝色,
颜色,绿色,
颜色,黄色,
颜色,粉色,
颜色,紫色,
颜色,棕色,
];
@凌驾
小部件构建(构建上下文){
返回容器(
孩子:下拉按钮(
价值:价值,
提示:文本(widget.label??“”),
一旦更改:(颜色){
设置状态(()=>值=颜色);
widget.onChanged(颜色);
},
项目:颜色
.地图(
(e) =>下拉菜单项(
价值:e,
子:容器(
宽度:widget.width,
高度:widget.height,
颜色:e,
),
),
)
.toList(),
));
}
}