如何将颜色列表视图放入警报对话框中,并以前导颜色作为颜色

How to put a colour listview in an alertdialog, with the leading as the colour

你好,我的问题是关于构建一个好的alertdialog

我有一个 Listtile Listtile,其中 leading 是一种颜色,title 是颜色的名称。 点击 Listtile 会显示带有颜色选项的警告对话框。

这就是我期待的结果。

我从一个页面找到了这个解决方案,但代码真的很难扩展。

我希望通过在颜色上使用地图并将它们打印为 Listview 在警报对话框中来实现此结果。提前感谢您的帮助

这个问题不是怎么发到别的页面吗?

根据评论,你想用他们的名字传递颜色。所以它可以像这样传递到第二个屏幕。

第一页,

var colors = {};
colors['color_x'] = 'COLORX';
colors['color_y'] = 'COLORY';

Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => SecondScreen(colors: colors),
  ),
);

在第二页,

class SecondScreen extends StatelessWidget {
  final Map colors;

  SecondScreen({Key key, @required this.colors}) : super(key: key);
  ...
}
  • 创建枚举:enum ColorEnum {red, green, blue}

  • 第 2 页:Navigator.of(context).pop(ColorEnum.red);

  • 如果您使用对话调用。那么在它之后:

    showDialog().then(colorValue){ //你的代码 };

  • 如果您使用 Navigator 推送新页面:使用 .then 之后:

    Navigator.push( 语境, MaterialPageRoute( 构建器:(上下文)=> SecondScreen(颜色:颜色), ), ).then(colorValue){//你的代码}