如何在 Flutter 中为地图分配自定义颜色而不出现类型不匹配错误?

问题描述 投票:0回答:1

我正在 Android Studio 中开发 Flutter 应用程序,并面临自定义颜色分配的挑战。我的目标是将特定的

colors
分配给我的应用程序中的不同状态。对于某些状态,使用预定义的颜色效果很好,例如
Colors.grey
代表
PomodoroStatus.runningPomodoro
。但是,当我尝试分配自定义颜色时,遇到类型不匹配错误,指出“元素类型‘Color’无法分配给地图值类型‘MaterialColor’”。

这里有一些背景信息:我正在实现一项功能,该功能可以根据番茄计时器的当前状态更改 UI 颜色。计时器有多种状态,例如运行、暂停和休息类型。我创建了一个地图,将每个状态与相应的颜色相关联。

代码:

import 'package:flutter/material.dart';
import '../model/pomodoro_status.dart';
import 'package:flutter/cupertino.dart';

const pomodoroTotalTime = 240 * 60;
const shortBreakTime = 20 * 60;
const lonBreakTime = 60 * 60;
const pomodoroPerSet = 4;

const Map<PomodoroStatus, String> statusDescription = {
  PomodoroStatus.runningPomodoro: 'Pomodoro is running, try to be focused',
  // Other status descriptions...
};

const Map<PomodoroStatus, MaterialColor> statusColor = {
  PomodoroStatus.runningPomodoro: Colors.grey, // Works fine
  // Custom color assignments below lead to errors
  PomodoroStatus.pausedPomodoro: const Color(0xFFC2C2C2),
  // Other status colors...
};


我已经尝试查阅 Flutter 文档并在这里搜索类似的问题,但找不到与我完全匹配的场景。我发现的大多数解决方案都与直接使用

Colors
相关,而不是自定义
Color
值。

问题:

  1. 如何正确地将自定义
    Color
    值分配给我的地图,而不会遇到类型不匹配错误?
  2. 是否有特定的方法将
    Color
    对象转换或转换为
    MaterialColor
    以适合地图的预期值类型?

任何相关文档的指导或参考将不胜感激。

android flutter dart material-design type-mismatch
1个回答
1
投票

您的

statusColor
地图具有
MaterialColor
作为值,因此它只接受
Colors
类中的颜色。

© www.soinside.com 2019 - 2024. All rights reserved.