You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter 2.12+版本SDK调用signIn登录无响应如何解决?

解决方案

1. 依赖版本适配

新建Flutter项目默认Dart SDK版本为>=2.12.0 <3.0.0,该版本区间不兼容shared_preferences: ^2.0.6,你需要修改pubspec.yaml文件中的依赖声明,将shared_preferences版本调整为^2.0.7,之后执行flutter pub get更新依赖即可解决版本兼容问题。

2. 安卓打包权限配置

模拟器运行属于debug调试模式,Flutter默认给debug包授予了网络权限,而release正式包默认没有网络权限,这就是你打包成APK后点击登录无响应的核心原因。
你需要在安卓项目的AndroidManifest.xml文件中添加网络权限声明,权限代码如下:

<uses-permission android:name="android.permission.INTERNET" />

注意:权限声明需要放在manifest根节点下,不要写在application节点内部。

3. 可选代码优化(推荐)

你当前的登录方法没有做异常捕获,当出现网络超时、域名解析失败、请求地址错误等异常时,方法会直接中断运行,也会出现点击无反应的情况。你可以给代码加上异常捕获逻辑,同时可以添加用户提示提升体验:

signIn(String email, String password, BuildContext context) async {
  try {
    SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
    var jsonResponse = null;
    var response = await http.get(Uri.https('myrl', 'login' + '$email/$password'));

    if (response.statusCode == 200) {
      jsonResponse = json.decode(response.body);
      if (jsonResponse != null) {
        sharedPreferences.setString("email_token", email);

        Navigator.of(context).pushReplacement(MaterialPageRoute(
             builder: (context) => MyApp()
         ));
      }
    } else {
      txtPassword.clear();
    }
  } catch (err) {
    // 此处可添加Toast等提示告知用户网络请求失败
    txtPassword.clear();
  }
}

内容的提问来源于stack exchange,提问作者babayaro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:18:03