【问题标题】:I want to use a hexadecimal code from firebase in Flutter我想在 Flutter 中使用来自 firebase 的十六进制代码
【发布时间】:2020-02-23 19:59:20
【问题描述】:

我是 Firebase 的新手,我终于从 Firebase 获得了数据。 我使用颜色,每张卡片都有一个颜色和颜色编号。

我在 Firebase 中有: 一个字段colorCode,它是一个String,值为'0xFFFFB142'

在 Flutter 中我尝试这样做:

final int colorCode = list[index]['colorCode'].hashCode;

                            Container(
                              height: 25.0,
                              width: 25.0,
                              color: Color(colorCode),
                            ),

我没有失败,但我看不到颜色。

它必须是 int,但它是字符串代码中的十六进制。 当我在 Firebase 中尝试一个 int 时,我失败了,因为它是十六进制的。

更新: 到目前为止,感谢大家的帮助! 我自己在 Firebase 中输入了代码。它和你通常放在那个地方的一样,比如 color: Color(0xFFFFB142),其中 FFB142 是颜色#FFB142 在 Firebase 中,我使用了字符串,因为不允许使用 int 或纯代码。 使用我的代码,当我打印它时:它得到 171924876,这不是正确的颜色代码。

我试过这个:

                    final dynamic colorCode =
                        list[index]['colorCode'].toString();

                    print(colorCode); // the right color code is printend: 0xFFFFB142

当我把它放进去时:

                            Container(
                              height: 25.0,
                              width: 25.0,
                              color: Color(0xFFFFB142),

它工作正常,但我在 Firebase 中为每个项目都有另一个颜色代码。

收到这条错误消息我觉得很奇怪,因为我不想要一个 int,而是一个像 0xFFFFB142 这样的颜色代码

 type 'String' is not a subtype of type 'int'

希望你能帮助我!

【问题讨论】:

  • colorCode 变量打印到控制台的结果是什么?
  • (Color Class) 中提到的 Color 构造函数接受一个 int 值:Color(int value) 所以你不能使用字符串 代替。这不起作用 Color("your_color").
  • 如果最终结果是你需要和 int,那么在存储到 firebase 之前,将 Hex 转换为和 Int 并将其存储为 int。
  • 谢谢。我已经编辑了我的问题。 er 是 int 值很奇怪,因为我通常使用的代码不是 int 而是 hex。
  • 十六进制只是表示整数的一种方式,十进制也是如此(这是您打印的)。但是数字171924876 不是很好的颜色。你从哪里得到它,你是怎么把它放到 Firebase 中的?

标签: firebase flutter hex background-color hashcode


【解决方案1】:

您可以使用截断0x 并将其余部分解析为十六进制的函数。

Color convertToColor(String prefixedHex) => Color(int.parse(
      prefixedHex.substring(2),
      radix: 16,
    ));

【讨论】:

  • 它从第三个字符开始创建一个新字符串,即FFFFB142
  • 感谢您的帮助。完整的代码是我自己填写的。那我是不是必须填写没有前两个字符的代码?
  • 我已经编辑了我的问题,希望我现在更清楚了。谢谢!
【解决方案2】:

我找到了一个简单的解决方案,通过使用一个包将字符串代码“#FFB142”转换为颜色代码:Flutter_Color。

https://pub.dev/packages/flutter_color

我使用的代码:

import 'package:flutter_color/flutter_color.dart';

final String colorCode = list[index]['colorCode'];

                            Container(
                              height: 25.0,
                              width: 25.0,
                              color: HexColor(colorCode),

所以我导入包,让颜色代码为字符串,并使用HexColor而不是Color。

希望这个简单的解决方案也能帮助其他人。 感谢这里的所有其他人为我指出正确的方向。最后它不是关于firebase,而是将字符串转换为颜色代码,所以我用谷歌搜索了这个包。

【讨论】:

  • 或者你可以用几行代码来完成,比如:stackoverflow.com/questions/50381968/… 你的问题并不清楚你有一个#RRGGBB 代码
  • 感谢理查德,感谢您的帮助!老实说,这个包的解决方案对于像我这样的初学者来说更容易。
猜你喜欢
  • 2012-06-10
  • 2019-04-19
  • 2019-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多