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

Android Studio中Flutter程序无法读取stdin输入并抛出空值异常求助

问题分析与解决

问题根源

你这段代码使用了dart:io的stdin.readLineSync(),这个API是专为Dart控制台程序设计的。在Flutter移动设备(安卓模拟器/真机)环境下,不存在标准输入流,调用该方法后会直接返回null,而你代码里的!强制非空断言会触发Null check operator used on a null value异常。

另外Android Studio的调试控制台仅负责输出日志,不会为移动应用提供输入交互通道,所以程序直接跳过输入步骤,拿到null后立刻报错。

解决方案

方案1:切换到Dart控制台项目运行

如果只是练习Dart基础语法,不要在Flutter项目中运行这段代码:

  • 在Android Studio中新建Dart Console Application项目
  • 复制你的代码到新项目中,运行时终端会弹出输入框,让你输入数字,即可正常执行逻辑。

方案2:用Flutter UI组件实现输入(适配移动场景)

如果要在Flutter应用中实现数字相加功能,需要用Flutter的UI组件获取用户输入,比如TextField,示例代码如下:

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('数字相加计算器')),
        body: const NumberAdditionWidget(),
      ),
    );
  }
}

class NumberAdditionWidget extends StatefulWidget {
  const NumberAdditionWidget({super.key});

  @override
  State<NumberAdditionWidget> createState() => _NumberAdditionWidgetState();
}

class _NumberAdditionWidgetState extends State<NumberAdditionWidget> {
  final _firstController = TextEditingController();
  final _secondController = TextEditingController();
  String _result = '';

  void _calculate() {
    try {
      final first = double.parse(_firstController.text);
      final second = double.parse(_secondController.text);
      setState(() {
        _result = '计算结果:${first + second}';
      });
    } catch (e) {
      setState(() {
        _result = '请输入有效的数字';
      });
    }
  }

  @override
  void dispose() {
    _firstController.dispose();
    _secondController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(16.0),
      child: Column(
        children: [
          TextField(
            controller: _firstController,
            keyboardType: TextInputType.numberWithOptions(decimal: true),
            decoration: const InputDecoration(labelText: '请输入第一个数字'),
          ),
          TextField(
            controller: _secondController,
            keyboardType: TextInputType.numberWithOptions(decimal: true),
            decoration: const InputDecoration(labelText: '请输入第二个数字'),
          ),
          const SizedBox(height: 20),
          ElevatedButton(onPressed: _calculate, child: const Text('计算')),
          const SizedBox(height: 20),
          Text(_result, style: const TextStyle(fontSize: 18)),
        ],
      ),
    );
  }
}

这段代码通过Flutter的TextField组件获取用户输入,点击按钮后执行计算逻辑,并将结果展示在界面上,完全适配移动设备的交互逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 02:03:59