我用Ffltter创建了一个简单的登录应用程序.后端是简单的JWT.登录成功后,不能重定向到其他页面请帮助 这是登录页面代码

            //login buttom
            SizedBox(
              width: 360,
              child: Padding(
                padding: const EdgeInsets.only(top: 48.0),
                child: ElevatedButton(
                  onPressed: () {
                    authController.loginUser();
                  },
                  style: ElevatedButton.styleFrom(
                      backgroundColor: const Color.fromARGB(255, 40, 41, 131),
                      padding: const EdgeInsets.only(
                        top: 16,
                        bottom: 16,
                      )),
                  child: const Text(
                    'ログイン ',
                    style: TextStyle(
                        color: Colors.white,
                        fontSize: 16,
                        fontWeight: FontWeight.w700),
                  ),
                ),
              ),
            ), //end login buttom
            const SizedBox(
              height: 60,
            ),
          ],
        ),
      ),
    );
  }
}

这是身份验证控制器代码

class AuthController {
  TextEditingController emailController = TextEditingController();
  TextEditingController passwordController = TextEditingController();
  Future loginUser() async {
    const url = 'http://127.0.0.1:8000/api/v1/login/';

    var response = await http.post(Uri.parse(url),
        headers: {
          "content-type": "application/json",
          "accept": "application/json",
          "access": "Access-Control-Allow-Origin: *",
          "allow": "POST, OPTIONS",
        },
        body: jsonEncode({
          "email": emailController.text,
          "password": passwordController.text,
        }));
    if (response.statusCode == 200) {
      var loginArr = json.decode(response.body);
      print('Home');
      Navigator.push(context, MaterialPageRoute(builder: (context) => Nav()));
      // save this token in shared prefrences and make user logged in and navigate

      print(loginArr['token']);
    } else {}
  }
}

我try 修复此错误请帮助me.how成功登录后导航到其他页面

推荐答案

 onPressed: () async {
             await  authController().loginUser().whenComplete(() => {
                      if (authController.isSuccess){
                          // Navigate to next page    
                        }
              },

从登录按钮更改您的onPressed

class AuthController { 
      TextEditingController emailController = TextEditingController();
      TextEditingController passwordController = TextEditingController();
      bool isSuccess = false;
    
      Future loginUser() async {
        const url = 'http://127.0.0.1:8000/api/v1/login/';
    
        var response = await http.post(Uri.parse(url),
            headers: {
              "content-type": "application/json",
              "accept": "application/json",
              "access": "Access-Control-Allow-Origin: *",
              "allow": "POST, OPTIONS",
            },
            body: jsonEncode({
              "email": emailController.text,
              "password": passwordController.text,
            }));
        if (response.statusCode == 200) {
      

          isSuccess = true;
          var loginArr = json.decode(response.body);
          print('Home');
      
    
    
          print(loginArr['token']);
        } else {
          isSuccess = false;
        }
      }
}

您可以设置一个Success bool以了解您的API是否成功

Flutter相关问答推荐

获取屏幕大小的滚动视图与动态大小?

壁炉有序在Flutter

Flutter AppBar Animation反向调试

Flutter BLoC et workmanager:如何创建独特的仓库初始化模式?

如何知道当前屏幕是否处于抖动状态?

如何在用Ffltter成功登录后重定向下一页?

ReCAPTCHA Enterprise中的严重安全漏洞

UI中的Flutter 下拉列表值未更改

无法在我的Flutter 应用程序中使用GoRouter测试导航

在Flutter 中更改扩展瓷砖的高度

如何在Ffltter 3.16中设置标准的提升按钮主题?

在Flutter 中创建自定义形状

为什么我的Flutter 动画过渡没有发生?

Flutter:我的应用程序是否需要包含退款购买?

在使用 Android 12+ 的真实 Android 设备上,SingleChildScrollView 中最初位于视口之外的无响应 Web 视图

Flutter 包错误:此应用程序使用的是已弃用的 Android 嵌入版本

Flutter列顶部和底部出现不必要的边距问题

Flutter - 如何将按钮对齐到行的右侧

Flutter 如何使用 ClipPath 编辑容器的顶部?

如何获得Flutter 的时差?