2017-10-08 1 views
0

私は製品のリストで簡単なアプリを見つけました。製品はFirebase Firestoreに保管されています。私は製品のリストをダウンロードし、ユーザーにいくつかのデータを更新する可能性を与えたい。Flutter Firestore - ドキュメントスナップショットを検索するid

だから私は製品とのリストを準備します

Widget _buildProductsList() { 
    return new StreamBuilder(
    stream: Firestore.instance 
     .collection('products') 
     .snapshots, 
    builder: (context, snapshot) { 
     if (!snapshot.hasData) return new Text("Loading..."); 

     return new ListView(
     children: snapshot.data.documents.map((document) { 
      Product product = new Product(document.data); 
      _ProductCell cell = new _ProductCell(); 
      cell.product = product; 
      return cell; 
     }).toList(), 
    ); 
    }, 
); 
} 

私は私のProductオブジェクトにドキュメントのスナップショットをシリアライズ:

class Product { 

    static const NAME_KEY = 'name'; 
    static const DESC_KEY = 'desc'; 
    static const PHOTO_URL_KEY = 'photoUrl'; 
    static const AUTHOR_ID_KEY = 'authorId'; 
    static const CREATED_AT_KEY = 'createdAt'; 

    String name; 
    String description; 
    String photoUrl; 
    String authorId; 
    int createdAt; 

    Product(Map<String, dynamic> json) { 
     name = json[NAME_KEY]; 
     description = json[DESC_KEY]; 
     photoUrl = json[PHOTO_URL_KEY]; 
     authorId = json[AUTHOR_ID_KEY]; 
     createdAt = json[createdAt]; 
    } 
} 

今、ユーザーはいくつかのProductCellと対話作るとき私は製品のドキュメントを更新したいですFirestoreはリンクされていますがIDは持っていませんので、適切なFirestoreのリファレンスを作成することは不可能です。

これを行うには?

答えて

1

問題#12471が解決されているので、あなたはドキュメントオブジェクトから文書IDを取得することができます。

print(document.documentID) 
1

私は同じバグに遭遇したので、これについて昨日問題を作りました。あなたはここでそれを追跡することができます:https://github.com/flutter/flutter/issues/12471

現在、FireStoreプラグインにはいくつかの問題があります。 あなたはプラグインにフィルタリングすることでFirebaseプラグインですべての問題を見ることができます: https://github.com/flutter/flutter/labels/plugin%3A%20firebase