函数未从firebase获取数据,也未显示错误

rt4zxlrg  于 2023-02-13  发布在  其他
关注(0)|答案(1)|浏览(103)

我有一个函数从firebase firestore获取数据一切正常,除了它不获取数据,它也没有显示错误,我不知道为什么请帮助我在这里
我的代码功能类似于使用列表选取器选取文档名称并单击获取按钮(位于Map页面内),它应该从数据库中获取数据并给出特定页面的结果
在函数(fetchmap)内部,加载条也不工作,我不知道为什么?
下面是我代码:
标测点:

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:helping_hand/UI/Other/Emergency.dart';
import 'package:list_picker/list_picker.dart';

import '../../StateManagement/MapController.dart';
import '../../drawers/bottomnavbar.dart';
import '../Bottom Navigation/My status.dart';

class Mappage extends StatelessWidget {
    Mappage({Key? key}) : super(key: key);

   final TextEditingController selectPage = TextEditingController();
   final List<String> pageList = ['helps','sitrep','location','emergencies', 'users',];

  @override
  Widget build(BuildContext context) {
    MapController mapcontroller = Get.find();
    return Scaffold(
        body: Stack(
          children: [
            SizedBox(height: MediaQuery.of(context).size.height,
              child: SingleChildScrollView(
                child: SizedBox(height: MediaQuery.of(context).size.height,width: MediaQuery.of(context).size.width,
                  child: Column(
                    children: [
                      Stack(
                        children: [
                          SizedBox(
                            height: MediaQuery.of(context).size.height,
                            child: GetBuilder<MapController>(builder: (_)=>GoogleMap(initialCameraPosition:MapController.initial,
                              mapType: MapType.normal,markers:mapcontroller.markers,
                                onMapCreated: (GoogleMapController controller){
                                mapcontroller.completercontrol.complete(controller);
                                mapcontroller.googleMapController = controller;
                              },),)
                          ),
                          Positioned(
                            top: 50,
                            height: 60,
                            width: MediaQuery.of(context).size.width,
                            child: Row(mainAxisAlignment: MainAxisAlignment.spaceAround,
                              children: [
                                SizedBox(width: MediaQuery.of(context).size.width/2,
                                    child: ListPickerField(label:'select', items:pageList,controller:selectPage,)),
                                ElevatedButton(
                                    style:const ButtonStyle(backgroundColor:MaterialStatePropertyAll(Colors.redAccent)) ,
                                    onPressed: () {
                                      if(selectPage.text.isNotEmpty){
                                        mapcontroller.fetchMap(selectPage.text);
                                      }else{
                                        Get.snackbar('error','select a page from dropdown menu');
                                      }
                                    },
                                    child:const Text('Get',style: TextStyle(color: Colors.white),)),
                                FloatingActionButton(
                                  heroTag: 'btn1',
                                  onPressed:(){
                                    Get.to(()=>Emergency());
                                  },
                                  child: const Icon(Icons.emergency_outlined),
                                )
                              ],
                            ),
                          ),
                          Positioned(
                            bottom: 50,
                            width: MediaQuery.of(context).size.width,
                            child: Row(mainAxisAlignment: MainAxisAlignment.spaceAround,
                              children: [
                                ElevatedButton(
                                    style:const ButtonStyle(backgroundColor:MaterialStatePropertyAll(Colors.redAccent)) ,
                                    onPressed: () {
                                      Get.offAll(()=>Nav());
                                    },
                                    child:const Text('Go to Dashboard',style: TextStyle(color: Colors.white),)),
                                FloatingActionButton(
                                  heroTag: 'btn2',
                                    onPressed: () {
                                      mapcontroller.getlatlong();
                                    },
                                    child:const Icon(Icons.location_on,color: Colors.white,)),
                              ],
                            ),
                          ),
                        ],
                      ),
                    ],
                  ),
                ),
              ),
            ),
            GetBuilder<MapController>(builder: (_){
              if (mapcontroller.isloading == true) {
                return Container(
                  color: Colors.white.withOpacity(0.5),
                  child: const Center(
                    child: CircularProgressIndicator(backgroundColor: Colors.redAccent,color: Colors.white,),
                  ),
                );
              } else {
                return const SizedBox.shrink();
              }
            }),
          ],
        ));
  }
}

和我的mapcontroller(函数是底部的fetchmap)(使用getx):

import 'dart:async';

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/foundation.dart';
import 'package:geolocator/geolocator.dart';
import 'package:get/get.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:helping_hand/UI/Map/Mappage.dart';

class MapController extends GetxController{
  String locationmessage = 'currentlocation of user';
  late String lat ;
  late String long ;

  Set<Marker>markers={};

  @override
  void onInit() {
    lat = '10.228370';
    long ='76.198799';
    super.onInit();
  }

  late GoogleMapController googleMapController;

  final Completer<GoogleMapController> _controller = Completer();
  Completer<GoogleMapController> get completercontrol => _controller;

  static  CameraPosition initial =  const CameraPosition(target:LatLng(10.228370,76.198799),zoom: 15);

  //lower part

  Future<Position> getCurrentLocation() async {
    bool serviceEnabled = await Geolocator.isLocationServiceEnabled();
    if (!serviceEnabled) {
      return Future.error('the location is not enabled');
    }
    LocationPermission permission = await Geolocator.checkPermission();
    if (permission == LocationPermission.denied) {
      permission = await Geolocator.requestPermission();
      if (permission == LocationPermission.denied) {
        return Future.error(
            'location permissions are permanantly denied, cannot grant acess');
      }
    }
    if (permission == LocationPermission.deniedForever) {
      return Future.error(
          'location permissions are permanantly denied, cannot grant acess');
    }
    return await Geolocator.getCurrentPosition();
  }

  void liveLocation() {
    loadingbar();
    LocationSettings settings = const LocationSettings(
      accuracy: LocationAccuracy.high,
      distanceFilter: 100,
    );
    Geolocator.getPositionStream(locationSettings: settings)
        .listen((Position position) {
      lat = position.latitude.toString();
      long = position.longitude.toString();
      googleMapController.animateCamera(CameraUpdate.newCameraPosition(CameraPosition(target:LatLng(position.latitude,position.longitude),zoom: 15)));
      markers.clear();
      markers.add(Marker(markerId:const MarkerId('current user location'),position: LatLng(position.latitude,position.longitude)));
      update();
    });
    loadingbaroff();
  }

  void getlatlong(){
    loadingbar();
    getCurrentLocation().then((value){
      lat = '${value.latitude}';
      long = '${value.longitude}';
      googleMapController.animateCamera(CameraUpdate.newCameraPosition(CameraPosition(target:LatLng(value.latitude,value.longitude),zoom: 15)));
      markers.clear();
      markers.add(Marker(markerId:const MarkerId('current user location'),position: LatLng(value.latitude,value.longitude)));
      update();
      if (kDebugMode) {
        print(lat);
      }
      if (kDebugMode) {
        print(long);
      }
      liveLocation();
    });
    loadingbaroff();
  }

  void liveLocationToUpload(){
    LocationSettings settings = const LocationSettings(
      accuracy: LocationAccuracy.high,
      distanceFilter: 100,
    );
    Geolocator.getPositionStream(locationSettings: settings)
        .listen((Position position) {
      lat = position.latitude.toString();
      long = position.longitude.toString();
      update();
    });
  }

  //MAP PAGE CONTROLLER CONTROLLS ::::::::::::::

  List<DocsForMap> docsformap=[];
  Future<void> fetchMap(String page)async {
    print('this is starting of fetch map');
    loadingbar();
    update();
    print('after loading bar $isloading');
    docsformap.clear();
    print('cleared the values of list');
    final CollectionReference maps = FirebaseFirestore.instance.collection('map').doc('maps').collection(page);
    try{
      print('inside try catch');
      var data = maps.get();
      print('this is dataaa ::::: $data');
      maps.get().then((snapshot) => (){
        print('inside values::::: $snapshot');
        for (var document in snapshot.docs) {
          if (kDebugMode) {
            print('I AM ACESSING DATA HEREEEEEEEE  :::;;;;;;;;;;');
          }
          if (kDebugMode) {print(document.data());}
        }
      });
    }catch(e){
      Get.snackbar('error','error while fetching $page');
      print('error happenddddd :::::::: $e');
      loadingbaroff();
    }
    loadingbaroff();
  }



  bool isloading = false;

  void loadingbar() {
    isloading = true;
    update();
  }
  void loadingbaroff() {
    isloading = false;
    update();
  }

}

我的主机:

min=41.46
I/flutter (14542): this is starting of fetch map
I/flutter (14542): after loading bar true
I/flutter (14542): cleared the values of list
I/flutter (14542): inside try catch
I/flutter (14542): this is dataaa ::::: Instance of 'Future<QuerySnapshot<Map<String, dynamic>>>'
W/DynamiteModule(14542): Local module descriptor class for com.google.android.gms.providerinstaller.dynamite not found.
I/DynamiteModule(14542): Considering local module com.google.android.gms.providerinstaller.dynamite:0 and remote module com.google.android.gms.providerinstaller.dynamite:0
W/ProviderInstaller(14542): Failed to load providerinstaller module: No acceptable module com.google.android.gms.providerinstaller.dynamite found. Local version is 0 and remote version is 0.
W/le.helping_han(14542): Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
W/le.helping_han(14542): Accessing hidden method Lsun/misc/Unsafe;->putLong(Ljava/lang/Object;JJ)V (greylist, linking, allowed)
W/le.helping_han(14542): Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
W/le.helping_han(14542): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
W/le.helping_han(14542): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
W/le.helping_han(14542): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
W/le.helping_han(14542): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
W/le.helping_han(14542): Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
I/System.out(14542): [socket]:check permission begin!
W/le.helping_han(14542): Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
W/le.helping_han(14542): Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
W/le.helping_han(14542): Accessing hidden method Lsun/misc/Unsafe;->putLong(Ljava/lang/Object;JJ)V (greylist, linking, allowed)
W/le.helping_han(14542): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
W/le.helping_han(14542): Accessing hidden method Lsun/misc/Unsafe;->getLong(Ljava/lang/Object;J)J (greylist,core-platform-api, linking, allowed)
W/le.helping_han(14542): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
I/System.out(14542): [socket]:check permission begin!
I/System.out(14542): [socket]:check permission begin!
I/System.out(14542): [socket]:check permission begin!
D/ViewRootImpl(14542): setSurfaceViewCreated, created:false
D/Surface (14542): Surface::disconnect(this=0x7500239000,api=-1)
D/Surface (14542): Surface::disconnect(this=0x755e735000,api=1)
I/BufferQueueProducer(14542): [SurfaceTexture-0-14542-4](this:0x74a100b000,id:7,api:1,p:14542,c:14542) disconnect(P): api 1
I/BufferQueueProducer(14542): [ImageReader-1080x2340f1m3-14542-0](this:0x74cfcc8800,id:0,api:1,p:14542,c:14542) queueBuffer: fps=0.05 dur=600096.19 max=599491.31 min=10.40
I/BufferQueueProducer(14542): [ImageReader-1080x2340f1m3-14542-2](this:0x74cf08b800,id:3,api:1,p:14542,c:14542) queueBuffer: fps=0.05 dur=600100.68 max=599496.03 min=9.76
I/GED     (14542): ged_boost_gpu_freq, level 100, eOrigin 2, final_idx 29, oppidx_max 29, oppidx_min 0
W/le.helping_han(14542): Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
D/Surface (14542): Surface::disconnect(this=0x754e09a000,api=1)
E/libprocessgroup(14542): set_timerslack_ns write failed: Operation not permitted
7lrncoxx

7lrncoxx1#

尝试使用以下代码执行方法fetchMap

Future<void> fetchMap(String page) async {
    print('this is starting of fetch map');
    loadingbar();
    update();
    print('after loading bar $isloading');
    docsformap.clear();
    print('cleared the values of list');
    final CollectionReference maps = FirebaseFirestore.instance.collection('map').doc('maps').collection(page);
    try{
      print('inside try catch');
      var data = await maps.get();
      print('this is dataa ::::: $data');
      for (var document in data.docs) {
        if (kDebugMode) {
          print('I AM ACESSING DATA HEREEEEEEEE  :::;;;;;;;;;;');
        }
        if (kDebugMode) {print(document.data());}
      }
    } catch(e) {
      Get.snackbar('error','error while fetching $page');
      print('error happenddddd :::::::: $e');
    }
    loadingbaroff();
  }

相关问题