Флаттер навигатор пу sh в межгосударственном положении идет в петлю - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь перенаправить на другую страницу, если на главной странице отсутствуют данные, но он заходит в l oop и работает все время

@override
void initState() {
super.initState();
   _firestore
        .collection('users')
        .document(widget.firebaseUser.uid)
        .snapshots()
        .listen((DocumentSnapshot snapshot) => _onMeUpdate(snapshot));
}

void _onMeUpdate(DocumentSnapshot snapshot) {
  if (mounted) {
      setState(() {
       _gender = snapshot.data['gender'] ?? '';
       _match = snapshot.data['match'] ?? '';
       Future(() {
          if (_gender.isEmpty) {
            Navigator.of(context).push(CupertinoPageRoute(
                builder: (BuildContext context) => Page1(
                    firebaseUser: widget.firebaseUser)));
          } else {
            if (_match.isEmpty) {
              Navigator.of(context).push(CupertinoPageRoute(
                  builder: (BuildContext context) => Page2(
                      firebaseUser: widget.firebaseUser)));
            }
          }
        });
     });
  }
}

Ответы [ 2 ]

0 голосов
/ 04 апреля 2020

Используйте это:

WidgetsBinding.instance.addPostFrameCallback((_) => 
Navigator.of(context).push(CupertinoPageRoute( builder: (BuildContext context) => 
Page2(firebaseUser: widget.firebaseUser))));
0 голосов
/ 04 апреля 2020

Я нахожу свой ответ, я оставляю ответ на все, что с вами происходит.

Это случилось, когда он положил pushReplacement вместо pu sh

Navigator.of(context).pushReplacement(CupertinoPageRoute(
                  builder: (BuildContext context) => Page2(
                      firebaseUser: widget.firebaseUser)));
...