根据 Flutter 中的选定类别为小部件元素分配不同的颜色
Posted
技术标签:
【中文标题】根据 Flutter 中的选定类别为小部件元素分配不同的颜色【英文标题】:Assigning different color to a widget elements based on a selected category in Flutter 【发布时间】:2021-11-21 09:04:51 【问题描述】:我是 Flutter 和编程的新手,我需要指导。 我正在构建一个应用程序,用户可以在其中创建任务,并根据选定的类别与小部件一起显示相应的颜色。
目前,我收到错误:正文可能正常完成,导致返回“null”,但返回类型可能是不可为空的类型。 尝试在末尾添加 return 或 throw 语句。
函数(我在 _selectedCatColor 上得到错误):
Color _selectedCatColor(String catTitile)
switch (catTitile)
case 'Work':
return Colors.deepPurple;
case 'Personal':
return Colors.green;
case 'Kids':
return Colors.red;
case 'Parents':
return Colors.indigo;
case 'Friends':
return Colors.yellow;
case 'Misc':
return Colors.teal.shade800;
我怎么称呼它:
void submitData()
final enteredTitle = titleController.text;
final enteredCategory = _selectedCategory;
final enteredColor = _selectedCatColor(_selectedCategory!);
我的直觉是这很简单,但我想不通。
【问题讨论】:
【参考方案1】:您的函数的返回类型是Color
,它不可为空。你的函数永远不应该返回 null。 (如果你想让它可以为空,它应该是Color?
。)
另一方面,您的函数体有一个用于查找一些字符串比较的 switch 语句。现在我想我这样称呼你的函数:
_selectedCatColor("Jack")
您的函数根本不会返回任何内容,因为您的 switch 语句不处理“Jack”。 Dart 可以确定这可能会发生,这就是它向您提供该消息的原因。
避免这种情况的一种方法是在你的 switch 语句中设置一个默认值,例如:
case 'Misc':
return Colors.teal.shade800;
default:
return Colors.teal.shade800;
现在您将始终返回 Color
。
【讨论】:
以上是关于根据 Flutter 中的选定类别为小部件元素分配不同的颜色的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:在从小部件树中删除时或在其生命周期结束时为小部件设置动画?
Flutter:InkWell 在 Card 中完全不起作用