Я хочу использовать шестнадцатеричный код из Firebase в Flutter - PullRequest
1 голос
/ 23 февраля 2020

Я новичок в Firebase и наконец получил данные от Firebase, чтобы трепетать. Я работаю с цветами, и у каждой карты есть номер цвета и цвета.

У меня есть в Firebase: поле colorCode, которое является строкой и имеет значение '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 я использовал String, потому что не допускается использование 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'

Надеюсь, вы можете мне помочь!

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

Вы можете использовать функцию, которая усекает 0x и анализирует остальные как шестнадцатеричные.

Color convertToColor(String prefixedHex) => Color(int.parse(
      prefixedHex.substring(2),
      radix: 16,
    ));
0 голосов
/ 24 февраля 2020

Я нашел простое решение для преобразования строкового кода '# 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 вместо цвета.

Надеюсь, это простое решение поможет и другим. Спасибо всем остальным за то, что указали мне в правильном направлении. В конце концов, речь шла не о FireBase, а о преобразовании строки в цветовой код, и поэтому я погуглил этот пакет.

...