簡體   English   中英

如何在 flutter 不刷新的情況下從 firebase 檢索數據

[英]How can I retrieve data from firebase without refresh in flutter

我在 Firebase 實時數據庫中有 Boolean 值我想要在 flutter 中沒有屏幕刷新的更新值。我希望它在 flutter 上更新流線型

處理您的問題的一種簡單方法是使用“cloud_firestore”package。我將在下面制作 ua 示例代碼。

注意:在使用 Firestore 之前,您必須首先確保已初始化 FlutterFire:點擊此鏈接: https://firebase.flutter.dev/docs/overview/#initializing-flutterfire

import 'package:flutter/material.dart';


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

  @override
  _TestWidgetState createState() => _TestWidgetState();
}

class _TestWidgetState extends State<TestWidget> {
  final Stream<QuerySnapshot> _usersStream =
      Firebas`eFirestore.instance.collection('your collection name in database here').snapshots();`

  @override
  Widget build(BuildContext context) {
    return StreamBuilder<QuerySnapshot>(
      stream: _usersStream,
      builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (snapshot.hasError) {
          return const Text('Something went wrong');
        }

    if (snapshot.connectionState == ConnectionState.waiting) {
      return const LinearProgressIndicator();
    }


//this way you can extract your data from DB

//Of course it totally depend on if your data in Db is nested or not. just adjust it with your needs
    return ListView(
      children: snapshot.data!.docs.map((DocumentSnapshot document) {
        Map<String, dynamic> data =
            document.data()! as Map<String, dynamic>;
        return Column(children: [
          PassDataToAnotherWidget(data),
        ]);
      }).toList(),
    );
  },
);
  }
}

如果您在 Firebase 實時數據庫中有數據,您可以通過其onValue stream 監聽該數據的更新。 您可以使用 StreamBuilder 在小部件樹中使用此StreamBuilder

@override
Widget build(BuildContext context) {
  var ref = FirebaseDatabase.instance.ref('path_to_value');
  return Scaffold(
    StreamBuilder(
      stream: ref.onValue,
      builder: (context, snapshot) {
        if (snapshot.hasData) return Text(snapshot.data!.snapshot.value);
        if (!snapshot.hasData) return CircularProgressIndicator();
        if (snapshot.hasError) return Text(snapshot.error);
      }
    )
  )

我推薦觀看這個很棒的代碼視頻: Firebase 實時數據庫和 Flutter - Firecasts

暫無
暫無

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

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