Internal Linked Hash Map (_InternalLinkedHashMap) nasıl parçalanır anlatacağım bu yazıya hoşgeldiniz. Firebase üzerinde Liste biçiminde tutulan verileri okuduğunuz zaman karşılaşacağınız bu veri tipi aslında bir HashMap’tir. Bu HashMap parçalanırken Dart’ın Map sınıfı kullanılır.
Map<String, dynamic> map = Map<String, dynamic>.from(docSnap.data());
docSnap.data()’nın tuttuğu veri şöyle bir şey:
{field: [1,2,3,4,5,6}}
Bu veri tipi parçalanırken bir Map<String,dynamic> biçimine çevrilir. Map’in value kısmı dynamic olduğu için her türlü veri tipini tutabilir. Eğer veri daima Array olarak gelecekse, Map’in field key’ini kullanarak value’yu bir List objesine atabiliriz. Daha sonrasında da bu list üzerinde bir değişiklik veya okuma işlemleri yapabiliriz.
Map’i okumak için forEach kullanıyorum. key’i field değişkenime, value’yu ise list objeme atıyorum. Daha sonrasında dynamic olan list objemi cast<String> ile içerisindeki verileri String hale çeviriyorum.
Map<String, dynamic> map = Map<String, dynamic>.from(docSnap.data());
String field;
List<dynamic> list = List();
map.forEach((key, value) {
field = key;
list = value;
});
List<String> strList = list.cast<String>();
Firebase üzerinde ArrayList olarak eklediğiniz verilere Flutter üzerinde bu şekilde erişebilirsiniz.
Okuyucuya Not
Merhaba okuyucu! Blogum son zamanlarda yüksek trafik almaya başladı ve bu durumdan memnunum fakat aynı zamanda siz ziyaretçileri tatmin edememekten endişeliyim. 🙂 Eğer yazılarım ile ilgili bir tavsiyeniz olursa mail adresimden bana ulaşabilir veya Twitter üzerinden direct message gönderebilirsiniz. Github’ta örnek olarak yaptığım projelere göz atmak isterseniz de bu linki kullanabilirsiniz. Umarım bu ziyaretinizle size bir şeyler katabilmişimdir.
Sağlıcakla kalın!