簡體   English   中英

Flutter 從 Firestore 標志導航

[英]Flutter Navigation from Firestore Flag

我想做什么的圖表] 1

當 screen2_flag 的值更改為 true 時(在 firebase cloud firestore 上),我想從 screen1 導航到 Screen2,

我有如圖所示的屏幕 1,當我將 flag 的值從 false 更改為 true 時,它工作得非常好,直到 screen2_flag 的值為 false。

  void initState() {
    super.initState();

    DocumentReference reference =
        Firestore.instance.collection('myColection').document('myDoc');
    reference.snapshots().listen((querySnapshot) {
      print('got sanpshot' + querySnapshot.data['screen2_flag'].toString());
      if (querySnapshot.data['screen2_flag'].toString() == 'true') {
        Navigator.pushNamed(context, screen2.id);
      }
    });


   Widget build(BuildContext context) {
      // my code 
    ...

   }


  }

我可以在我的模擬器上看到 screen2。 但是在控制台上出現以下錯誤

[錯誤:flutter/lib/ui/ui_dart_state.cc(157)] 未處理的異常:setState() 回調參數返回了 Future。 E/flutter (24551):_WaitingRoomState#25dfa 上的 setState() 方法被調用了一個閉包或返回 Future 的方法。 也許它被標記為“異步”。 E/flutter (24551):不是在 setState() 調用中執行異步工作,而是首先執行工作(不更新小部件狀態),然后在 setState() 調用中同步更新 state。 E/顫振(24551):#0 State.setState。 (package:flutter/src/widgets/framework.dart:1151:9) E/flutter (24551): #1 State.setState (package:flutter/src/widgets/framework.dart:1167:6)

錯誤告訴你問題:

setState() 回調參數返回一個 Future

_WaitingRoomState#25dfa 上的 setState() 方法是使用返回 Future 的閉包或方法調用的

並告訴你解決方案:

不要在 setState() 調用中執行異步工作,而是先執行該工作(不更新小部件狀態),然后在 setState() 調用中同步更新 state

所以你進行異步調用,等待它直到你得到標志值(我猜是因為你沒有顯示那部分代碼),然后調用setState()更新新值。

暫無
暫無

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

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