Home > Blockchain >  Get all documents from a Firebase collection and set to static var Flutter
Get all documents from a Firebase collection and set to static var Flutter

Time:05-22

How to get all documents from firebase and set it to static var?

example

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/ = {
  };***
}

from firebase like this FirebaseDB

How i can get result like this(***) so i can use it for another page..

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.....
}
***

I'm sorry, I still very new to flutter and firebase.. so still many things i dont understand.

CodePudding user response:

If I understand you very well, you want to get all your database collection into one class, so that you will not need to go to the firebase to get them again, right?

CodePudding user response:

Create new file static_variable.dart Create StaticVariable class like this:

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

Request api when open app, you can request api in SplashScreen or everywhere you want, it up to you,

After data response, set new data for StaticVariable:

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

Then, you can call StaticVariable in everywhere in your project

Example:

static.dart

class StaticVariable {
  static String? textHello;
}

main.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(),
        ),
      ),
    );
  }
}

home.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 ?? ''),
      ),
    );
  }
}

Similar with request api

  • Related