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

Flutter开发问题:如何将TextEditingController文本转为整数?

Flutter中正确将TextFormField的duration输入转换为整数的方法

错误原因分析

你的代码报错核心问题有两个:

  1. 参数类型错误:int.tryParse()需要传入字符串参数,但你直接传了duration(TextEditingController实例),正确的应该是取它的text属性,即duration.text。
  2. 时机错误:在State初始化阶段就执行解析,此时duration.text是空字符串,解析结果为null,而且后续用户输入内容后,这个变量不会自动更新,完全失去意义。

正确实现方案

1. 移除无效的初始化代码

删掉这行错误的变量定义:

int? week = int.tryParse(duration); // Error here under duration

2. 加强输入验证(提前拦截无效内容)

修改duration对应的TextFormField的validator,确保输入是有效整数,避免后续转换失败:

TextFormField(
  controller: duration,
  keyboardType: TextInputType.number,
  validator: (value) {
    if (value == null || value.isEmpty) {
      return 'fill the information';
    }
    // 验证输入是否为有效整数
    if (int.tryParse(value) == null) {
      return 'Please enter a valid number';
    }
    return null;
  },
  decoration: InputDecoration(
    hintText: 'type here',
  ),
),

3. 在提交时执行转换

在点击"ADD PLAN"的回调里,表单验证通过后再解析duration的输入,此时输入已经被validator校验为有效整数,可以安全转换:

MaterialButton(
  onPressed: () {
    if (formKey.currentState!.validate()) {
      // 转换为整数
      int week = int.parse(duration.text);
      
      // 根据createPlanQAnswers的参数类型调整传入值:如果需要整数就传week,需要字符串就传week.toString()
      LifeStyleCubit.get(context).createPlanQAnswers(
          planName: planName.text,
          description: description.text,
          duration: week.toString(), 
          goal: goal,
          level: levelChoose
      );
      
      Navigator.push(context, MaterialPageRoute(
          builder: (context)=>PlanDetailsScreen(model)));
    }
  },
  child: Text('ADD PLAN',style: TextStyle(color: Colors.white, fontSize: 17),),
),

(可选)实时更新转换结果

如果需要在用户输入时实时获取整数结果,可以给controller添加监听:

@override
void initState() {
  super.initState();
  // 监听输入变化实时解析
  duration.addListener(() {
    setState(() {
      int? week = int.tryParse(duration.text);
      // 这里可以添加实时更新UI的逻辑
    });
  });
}

@override
void dispose() {
  duration.dispose();
  super.dispose();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:20:47