Android 如何在Flutter中使用不同色调的色样?

Android 如何在Flutter中使用不同色调的色样?,android,dart,material-design,flutter,Android,Dart,Material Design,Flutter,我试图学习应用程序开发使用颤振。在默认的颤振应用程序代码中,我尝试将以下代码更改为 primarySwatch: Colors.blueGrey primarySwatch: Colors.blueGrey[500] 但这带来了错误 ══╡ WIDGETS库捕获到异常╞═══════════════════════════════════════════════════════════ I/flatter(4512):在构建MyApp(dirty)时抛出以下断言: I/FLIFT(4512

我试图学习应用程序开发使用颤振。在默认的颤振应用程序代码中,我尝试将以下代码更改为

primarySwatch: Colors.blueGrey

primarySwatch: Colors.blueGrey[500]
但这带来了错误

══╡ WIDGETS库捕获到异常╞═══════════════════════════════════════════════════════════
I/flatter(4512):在构建MyApp(dirty)时抛出以下断言:
I/FLIFT(4512):类型“颜色”不是“原始样本”类型“材料颜色”的子类型,其中
I/flatter(4512):颜色来自dart:ui
I/颤振(4512):材料颜色来自包装:颤振/src/material/colors.dart
I/颤振(4512):int来自dart:核心
I/颤振(4512):
I/flatter(4512):要么断言表明框架本身存在错误,要么我们应该提供
I/flatter(4512):此错误消息中的更多信息可帮助您确定并修复根本原因。
I/flatter(4512):无论哪种情况,请在GitHub上提交一个bug来报告这一断言:
I/颤振(4512):https://github.com/flutter/flutter/issues/new
I/颤振(4512):
I/flatter(4512):抛出异常时,这是堆栈:
I/flatter(4512):#0新主题数据(包:flatter/src/material/theme_数据。dart:78:19)
I/flatter(4512):#1 MyApp.build(/data/user/0/com.hackathon.gunbana/cache/gun_bananaEMVSSI/gun_banananear/lib/main.dart:11:18)
I/flatter(4512):#2无状态元素.build(包:flatter/src/widgets/framework.dart:3678:28)
I/flatter(4512):#3 ComponentElement.performRebuild(包:flatter/src/widgets/framework.dart:3625:15)
I/flatter(4512):#4 Element.rebuild(包:flatter/src/widgets/framework.dart:3478:5)
I/flatter(4512):#5个组件元素。_firstBuild(包:flatter/src/widgets/framework.dart:3605:5)
I/flatter(4512):#6 ComponentElement.mount(包:flatter/src/widgets/framework.dart:3600:5)
I/flatter(4512):#7 Element.inflateWidget(包:flatter/src/widgets/framework.dart:2890:14)
I/flatter(4512):#8 Element.updateChild(包:flatter/src/widgets/framework.dart:2693:12)
I/flatter(4512):#9 RenderObjectToWidgetElement._重建(包:flatter/src/widgets/binding.dart:852:16)
I/flatter(4512):#10 RenderObjectToWidgetElement.mount(包:flatter/src/widgets/binding.dart:823:5)
I/颤振(4512):#11 RenderObjectToWidgetAdapter.attachToRenderTree。(包:flatter/src/widgets/binding.dart:769:17)
I/flatter(4512):#12 BuildOwner.buildScope(包:flatter/src/widgets/framework.dart:2205:19)
I/flatter(4512):#13 RenderObjectToWidgetAdapter.attachToRenderTree(包:flatter/src/widgets/binding.dart:768:13)
I/flatter(4512):#14 BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RenderBinding&WidgetsBinding.attachRootWidget(包:flatter/src/widgets/binding.dart:657:7)
I/flatter(4512):#15运行应用程序(包:flatter/src/widgets/binding.dart:699:7)
I/flatter(4512):#16 main(/data/user/0/com.hackathon.gunbana/cache/gun#u bananaEMVSSI/gun#u bananaeman/lib/main.dart:3:16)
I/颤振(4512):#17#星状。(省道:隔离补片/省道:隔离补片/隔离补片。省道:279)
I/flatter(4512):#18 RawReceivePortImpl.handleMessage(省道:隔离补丁/省道:隔离/隔离补丁。省道:165)
I/颤振(4512):════════════════════════════════════════════════════════════════════════════════════════════════════
如何使用阴影??

TLDR

不要


primarySwatch不是一种颜色。这是所有可能的材质阴影

如果查看主题数据的文档,它会显示:

从中选择的主调色板(主色样) 材质设计规范定义的其中一个样例。此 应该是[Colors]类中不包含的贴图之一 在他们的名字里有“口音”

这意味着在需要时,材质组件将使用primary[500],但也可以使用其他阴影

实际上,
primarySwatch
是设置一组不同颜色的快捷方式:

  • 原色
  • 原色光/暗
  • 强调色

但您可以根据需要分别覆盖它们,使用
颜色(而不是primarySwatch需要的
材质颜色)

在main.dart文件中,在MyApp类之外创建自定义颜色,如下所示:

Map<int, Color> color = {
50: Color.fromRGBO(255, 92, 87, .1),
100: Color.fromRGBO(255, 92, 87, .2),
200: Color.fromRGBO(255, 92, 87, .3),
300: Color.fromRGBO(255, 92, 87, .4),
400: Color.fromRGBO(255, 92, 87, .5),
500: Color.fromRGBO(255, 92, 87, .6),
600: Color.fromRGBO(255, 92, 87, .7),
700: Color.fromRGBO(255, 92, 87, .8),
800: Color.fromRGBO(255, 92, 87, .9),
900: Color.fromRGBO(255, 92, 87, 1),
};

MaterialColor colorCustom = MaterialColor(0xFFFF5C57, color);

我对这个答案感到不舒服。在我的代码中,我尝试了theme:new-ThemeData(primarySwatch:Colors.lime.shade700,theme:new-ThemeData)(primarySwatch:Colors.lime[700],并收到与OP相同的错误消息。您是否可以更具体一点,并提供一个示例?您需要执行
primarySwatch:Colors.lime
而不是
Colors.line。无论什么
我发现primarySwatch需要与backgroundColor不同的格式。因此,我感到困惑。谢谢您的想法。回答很好。我很高兴使用我自己的十六进制颜色包装到一个颜色对象中,用于所有类型的原色,但仍然启用了样例属性。现在我对其进行了注释,该应用程序可以工作…yippee!!!我认为您应该包括如何使用不同色调的示例。例如,一个样例中应该定义多少颜色,以及如何在代码中实际定义颜色。我们应该如何处理强调色贴图(A100-A700)?我也发生了类似的错误。我使用
颜色。黑色
作为样例颜色。但是,当我将其更改为
颜色时,蓝色
就起作用了。它也适用于其他一些颜色,但不适用于
颜色。黑色
和als
ThemeData(primarySwatch: Colors.lime),
ThemeData(primarySwatch: Colors.lime.shade700),
Map<int, Color> color = {
50: Color.fromRGBO(255, 92, 87, .1),
100: Color.fromRGBO(255, 92, 87, .2),
200: Color.fromRGBO(255, 92, 87, .3),
300: Color.fromRGBO(255, 92, 87, .4),
400: Color.fromRGBO(255, 92, 87, .5),
500: Color.fromRGBO(255, 92, 87, .6),
600: Color.fromRGBO(255, 92, 87, .7),
700: Color.fromRGBO(255, 92, 87, .8),
800: Color.fromRGBO(255, 92, 87, .9),
900: Color.fromRGBO(255, 92, 87, 1),
};

MaterialColor colorCustom = MaterialColor(0xFFFF5C57, color);
primarySwatch: colorCustom,