簡體   English   中英

從 Firebase 集合中獲取所有文檔並設置為靜態 var Flutter

[英]Get all documents from a Firebase collection and set to static var Flutter

如何從firebase獲取所有文檔並將其設置為靜態var?

例子

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';

FirebaseAuth auth = FirebaseAuth.instance;
FirebaseFirestore firestore = FirebaseFirestore.instance;

final officeRef = firestore.collection("office");

class CompanyData {

  ***static Map<String, dynamic> /id/ = {
  };***
}

來自這樣的Firebase FirebaseDB

我怎樣才能得到這樣的結果(***)所以我可以將它用於另一個頁面..

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';

class CompanyData {

FirebaseAuth auth = FirebaseAuth.instance;
FirebaseFirestore firestore = FirebaseFirestore.instance;

final officeRef = firestore.collection("office");

***
  static Map<String, dynamic> office1 = {
    'name': "OFFICE 1ST",
    'code': "c_office1",
    'latitude': -4.001,
    'longitude': 100.001,
  };
  static Map<String, dynamic> office2 = {
    'name': "OFFICE 2ND",
    'code': "c_office2",
    'latitude': -4.002,
    'longitude': 100.002,
  };
  static Map<String, dynamic> office3 = {
    'name': "OFFICE 3RD",
    'code': "c_office3",
    'latitude': -4.003,
    'longitude': 100.003,
  };
  static Map<String, dynamic> etc.....
}
***

對不起,我對顫振和火力基地還是很陌生..所以還有很多我不明白的事情。

創建新文件static_variable.dart像這樣創建 StaticVariable 類:

class StaticVariable {
  static bool? navigateRedeem;
  static String? keywordJob;
  static User? myUser;
}

打開應用程序時請求 api,您可以在 SplashScreen 或任何您想要的地方請求 api,由您決定,

數據響應后,為StaticVariable設置新數據:

//request api here: var res = await request .....
StaticVariable.myUser = res['user]

然后,您可以在項目的任何地方調用 StaticVariable

例子:

靜態飛鏢

class StaticVariable {
  static String? textHello;
}

主要.dart

import 'package:demo/static.dart';
import 'package:flutter/material.dart';
import 'home.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {

  @override
  void initState() {
    super.initState();
    StaticVariable.textHello = 'Hihihi';
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SafeArea(
        child: Scaffold(
          body: HomeScreen(),
        ),
      ),
    );
  }
}

主頁.dart

import 'package:demo/static.dart';
import 'package:flutter/material.dart';

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

  @override
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: Text(StaticVariable.textHello ?? ''),
      ),
    );
  }
}

與請求 api 類似

暫無
暫無

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

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