Saya ingin menggunakan kode heksadesimal dari firebase di Flutter

Saya baru mengenal Firebase dan akhirnya saya mendapatkan data dari Firebase. Saya bekerja dengan warna dan setiap kartu memiliki nomor warna dan warna.

Saya memiliki di Firebase: Bidang colorCode, yang merupakan String dan memiliki nilai '0xFFFFB142'

Di Flutter saya mencoba melakukannya seperti ini:

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

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

Saya tidak mendapatkan kegagalan, tetapi saya tidak melihat warna.

Itu harus berupa int, tetapi itu adalah heksadesimal dalam kode string. Saat saya mencoba int di Firebase, saya gagal karena hex.

Pembaruan: Terima kasih atas bantuan Anda sejauh ini! Saya sendiri telah memasukkan kodenya di Firebase. Sama seperti yang biasa Anda letakkan di tempat itu, seperti warna: Warna (0xFFFFB142), di mana FFB142, adalah warna #FFB142 Di Firebase saya menggunakan String, karena kode int atau biasa tidak diperbolehkan. Dengan kode saya, ketika saya mencetaknya: mendapat 171924876, itu bukan kode warna yang tepat.

Saya sudah mencoba ini:

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

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

Dan ketika saya memasukkan ini:

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

Ini berfungsi dengan baik, tetapi saya memiliki Kode warna lain untuk setiap item di Firebase.

Saya merasa sangat aneh mendapat pesan kesalahan ini, karena saya tidak ingin ada int di sana, tetapi kode warna seperti 0xFFFFB142

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

Semoga Anda dapat membantu saya!


person Margriet    schedule 23.02.2020    source sumber
comment
Apa hasil pencetakan variabel colorCode ke konsol?   -  person Gabe    schedule 23.02.2020
comment
Konstruktor Warna sebagaimana disebutkan dalam (Kelas Warna) menggunakan nilai int: Warna(nilai int) sehingga Anda tidak dapat menggunakan String sebagai gantinya. ini tidak akan berfungsi Warna(warna_Anda).   -  person Abdelbaki Boukerche    schedule 23.02.2020
comment
Jika hasil akhirnya membutuhkan dan int, maka sebelum menyimpan di firebase, konversikan Hex menjadi dan Int dan simpan sebagai int.   -  person Jay    schedule 24.02.2020
comment
Terima kasih sejauh ini. Saya telah mengedit pertanyaan saya. Aneh kalau er bernilai int, karena kode yang saya gunakan biasanya bukan int melainkan hex.   -  person Margriet    schedule 24.02.2020
comment
Hex hanyalah salah satu cara untuk mewakili int, seperti desimal (yang Anda cetak). Namun angka 171924876 bukanlah warna yang bagus. Di mana Anda mendapatkannya dan bagaimana cara memasukkannya ke Firebase?   -  person Richard Heap    schedule 24.02.2020
comment
Angka 171924876 yang saya dapatkan ketika saya mencetak colorCode setelah kode: list[index]['colorCode'].hashCode; sepertinya mengonversi kode asli: 0xFFFFB142. Jadi saya menghapus .hashCode dan kemudian saya mencetak kode 0xFFFFB142. Itu adalah kode warna yang bagus dan ketika saya memasukkan kode warna sebagai 0xFFFFB142 di Warna (0xFFFFB142) maka itu berfungsi dengan baik. Tetapi ketika saya memasukkan Color(colorCode) maka saya gagal.   -  person Margriet    schedule 24.02.2020
comment
Jadi, tambahkan kode dari jawaban dan kemudian di mana Anda akan menggunakan Color(colorCode) gunakan convertToColor(colorCode)   -  person Richard Heap    schedule 24.02.2020


Jawaban (2)


Anda bisa menggunakan fungsi yang memotong 0x dan mem-parsing sisanya sebagai hex.

Color convertToColor(String prefixedHex) => Color(int.parse(
      prefixedHex.substring(2),
      radix: 16,
    ));
person Richard Heap    schedule 23.02.2020
comment
Itu membuat string baru dimulai dari karakter ketiga, yaitu FFFFB142 - person Richard Heap; 24.02.2020
comment
Terima kasih untuk bantuannya. Kode lengkapnya adalah sesuatu yang saya isi sendiri. Lalu apakah saya harus mengisi kode tanpa dua karakter pertama? - person Margriet; 24.02.2020
comment
Saya telah mengedit pertanyaan saya, semoga saya lebih jelas sekarang. Terima kasih! - person Margriet; 24.02.2020

Saya telah menemukan solusi sederhana untuk mengubah kode string '#FFB142' menjadi kode warna dengan menggunakan paket: Flutter_Color.

https://pub.dev/packages/flutter_color

Kode yang saya gunakan:

import 'package:flutter_color/flutter_color.dart';

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

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

Jadi saya mengimpor paketnya, biarkan kode warnanya berupa string dan menggunakan HexColor, bukan Warna.

Semoga solusi sederhana ini akan membantu orang lain juga. Terima kasih kepada semua orang di sini karena telah mengarahkan saya ke arah yang benar. Pada akhirnya ini bukan tentang firebase, tetapi mengubah string menjadi kode warna, jadi saya mencari paket ini di Google.

person Margriet    schedule 24.02.2020
comment
Atau Anda dapat melakukannya dalam beberapa baris seperti: stackoverflow.com/questions/50381968/ Tidak jelas dari pertanyaan Anda bahwa Anda memiliki kode #RRGGBB - person Richard Heap; 25.02.2020
comment
Terima kasih Richard, atas semua bantuan Anda! Sejujurnya, solusi dengan paket ini lebih mudah bagi pemula seperti saya. - person Margriet; 25.02.2020