簡體   English   中英

從 Firestore 獲取字段作為 flutter 中的字符串

[英]Fetch field from firestore as String in flutter


我想從 firestore 中獲取一個字段值並將其分配給 String 變量。
那么我該怎么做呢?
當我獲取數據時,它以 map 的形式出現。
那么我可以通過哪種方式將數據作為字符串獲取

屏幕a.dart

class ScreenA extends StatefulWidget {
  const ScreenA({Key? key}) : super(key: key);

  @override
  State<ScreenA> createState() => _ScreenAState();
}

class _ScreenAState extends State<ScreenA> {
  List<String> docIDs = [];

  Future getDocId() async {
    final userId = AuthService.firebase().currentUser!.id;
    await FirebaseFirestore.instance
        .collection('user')
        .where('user_id', isEqualTo: userId)
        .get()
        .then(
          (snapshot) => snapshot.docs.forEach(
            (document) {
              docIDs.add(document.reference.id);
            },
          ),
        );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: FutureBuilder(
        future: getDocId(),
        builder: (context, snapshot) {
          return ListView.builder(
            shrinkWrap: true,
            itemCount: docIDs.length,
            itemBuilder: (context, index) {
              return ListTile(title: Gettt(docId: docIDs[index]));
            },
          );
        },
      ),
    );
  }
}

gettt.dart

class Gettt extends StatelessWidget {
  final String docId;
  Gettt({Key? key, required this.docId}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    CollectionReference users = FirebaseFirestore.instance.collection('user');

    return FutureBuilder<DocumentSnapshot>(
      future: users.doc(docId).get(),
      builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.done) {
          Map<String, dynamic> data =
              snapshot.data!.data() as Map<String, dynamic>;
          return Text('Locker Id: ${data['first_name']}');
        }
        return const Text('Loading');
      },
    );
  }
}

這是我的代碼
對不起最后一次
我可以得到一個項目列表
但我想在沒有小部件的情況下獲得一個字符串
怎么做?

獲取文檔后,可以獲取字段示例[dart]: 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM