【问题标题】:Flutter - Navigator.push and pop isn't working with CircularProgressIndicatorFlutter - Navigator.push 和 pop 不适用于 CircularProgressIndicator
【发布时间】:2023-02-16 13:21:39
【问题描述】:

navigator.push 不会将我重定向到我确实想要重定向的页面,而且 navigator.pop 不会弹出 circularprogressindicator,我被困在那里。

这是我的文件的导入。

import 'package:file_name/products/widget_helper/register_ui_widget_functions.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

import '../helper/user_registration_helper.dart';
import '../model/user_registration_model.dart';
import '../pages/home_page.dart';

注册_widgets.dart

Future signUpUser(emailUserCtrlr, passwordUserCtrlr, repeatPasswordUserCtrlr,
    firstNameUserCtrlr, lastNameUserCtrlr, context) async {
  RegistrationUser.checkFieldValidation(emailUserCtrlr, passwordUserCtrlr,
      repeatPasswordUserCtrlr, firstNameUserCtrlr, lastNameUserCtrlr);
  RegistrationUser.confirmPassword(
      passwordUserCtrlr, repeatPasswordUserCtrlr);
  if (RegistrationUser.confirmPassword(
      passwordUserCtrlr, repeatPasswordUserCtrlr)) {
        // CricularProgressIndicator here...
    ReusableWidgets.showDialogCircularIndicator(context);
    try {
      await FirebaseAuth.instance.createUserWithEmailAndPassword(
          email: emailUserCtrlr.text.trim(),
          password: passwordUserCtrlr.text.trim());
      FirestoreUserHelper.create(UserModel(
        firstName: firstNameUserCtrlr.text.trim(),
        lastName: lastNameUserCtrlr.text.trim(),
        userEmail: emailUserCtrlr.text.trim(),
      ));
      ToastRegisterUser.registeredSuccessfully();
      // Navigator.push not working
      Navigator.push(
        context,
        MaterialPageRoute(builder: (context) => const UserHomePage()),
      );
    } on FirebaseAuthException catch (e) {
      ToastRegisterUser.emailAlreadyRegistered(emailUserCtrlr);
    }
    // Navigator Pop not working
    Navigator.of(context).pop();
  }
}

这是我的 CircularProgressIndicator,我把它放在一个函数上以便它可以重用。

static showDialogCircularIndicator(BuildContext context) {
    return showDialog(
        context: context,
        builder: (BuildContext context) {
          return const Center(
            child: CircularProgressIndicator(),
          );
        });
  }

我已经尝试过,将其作为函数删除并通过重做来添加导入。但是它仍然无法修复。我不知道这是 firebase 问题还是 Flutter UI 问题。

【问题讨论】:

  • 你试过Navigator.of(context, rootNavigator: true).pop()了吗?
  • 你好,@Burak。是的,我试过了,但还是不行。
  • 您放置了不必要的代码部分。问题出在用户界面上。所以向我们展示 UI 代码部分。
  • 请阐明您的具体问题或提供更多详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: android flutter dart google-cloud-firestore firebase-authentication


【解决方案1】:

因为你是打开对话框而不是弹出对话框,所以你必须先关闭对话框然后弹出页面屏幕,如下所示。

 ReusableWidgets.showDialogCircularIndicator(context);
    try {
      await FirebaseAuth.instance.createUserWithEmailAndPassword(
          email: emailUserCtrlr.text.trim(),
          password: passwordUserCtrlr.text.trim());
      FirestoreUserHelper.create(UserModel(
        firstName: firstNameUserCtrlr.text.trim(),
        lastName: lastNameUserCtrlr.text.trim(),
        userEmail: emailUserCtrlr.text.trim(),
      ));
      ToastRegisterUser.registeredSuccessfully();
      // Navigator.push not working
       
        Navigator.of(context).pop(); // add this line here for closing dialog

      Navigator.push(
        context,
        MaterialPageRoute(builder: (context) => const UserHomePage()),
      );
    } on FirebaseAuthException catch (e) {
      ToastRegisterUser.emailAlreadyRegistered(emailUserCtrlr);
    }
    // Navigator Pop not working
    Navigator.of(context).pop();
    Navigator.of(context).pop(); // add this line here

【讨论】:

    猜你喜欢
    • 2022-10-06
    • 2021-11-01
    • 2020-03-30
    • 2021-01-30
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    • 2020-08-13
    • 2020-11-10
    相关资源
    最近更新 更多