You need to enable JavaScript to run this app. Flutter MySQL登录认证后拉取用户信息出现类型错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Flutter MySQL登录认证后拉取用户信息出现类型错误如何解决

异常根因

Text组件仅接受String类型的入参,你从FlutterSession取出的card值实际被解析为int类型,直接传入Text组件就触发了类型不匹配异常。通常是因为纯数字格式的字符串被FlutterSession自动做了类型转换,取出时从String变成了int。

修复方案

1. 取值时强制转换为String

修改homepage.dart中FutureBuilder的返回逻辑,调用toString()方法做类型转换:

child: FutureBuilder(
     future: FlutterSession().get('card'),
     builder: (context, AsyncSnapshot snapshot) {
         return Text(
              snapshot.hasData
                ? snapshot.data.toString() // 新增类型转换逻辑
                : 'Loading...',
                style: TextStyle(
                  color: Colors.white,
                  letterSpacing: 3.0,
                  fontSize: 20,
                  fontWeight: FontWeight.w200
                )
         );
     }
),

2. 存储时显式固定为String类型

你也可以在存储card值时就显式声明为String,避免框架自动转换:

// login.dart中存储逻辑修改为
await FlutterSession().set('card', card.text.toString());

可选优化:加泛型约束提前校验类型

给FutureBuilder和AsyncSnapshot加上泛型约束,在编译阶段就能发现类型不匹配问题:

FutureBuilder<String?>(
  future: FlutterSession().get('card').then((val) => val?.toString()),
  builder: (context, AsyncSnapshot<String?> snapshot) {
    // 原有业务逻辑
  }
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 09:54:07