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