Dart中stdin.readLineSync()获取输入返回null的问题求助
解决Flutter中stdin.readLineSync()返回null的问题
你的代码是标准Dart控制台程序的写法,但在Flutter环境中运行时,stdin(标准输入流)无法正常工作——Flutter是用于构建UI应用的框架,不管是在模拟器还是真实设备上,都没有传统控制台的输入交互环境,所以stdin.readLineSync()会直接返回null。
两种解决方案:
仅练习Dart基础语法:用Dart SDK单独运行
把代码保存为独立的.dart文件,然后在终端执行:dart run 你的文件名.dart这样就能在终端正常输入并获取值。
在Flutter应用中实现用户输入:使用UI组件
如果你需要在Flutter应用里让用户输入内容,应该用Flutter提供的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 InputDemo(), ), ); } } class InputDemo extends StatefulWidget { const InputDemo({super.key}); @override State<InputDemo> createState() => _InputDemoState(); } class _InputDemoState extends State<InputDemo> { final TextEditingController _controller = TextEditingController(); String _inputContent = ''; @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Padding( padding: const EdgeInsets.all(16.0), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ TextField( controller: _controller, decoration: const InputDecoration(hintText: '请输入你的名字'), ), const SizedBox(height: 16), ElevatedButton( onPressed: () { setState(() { _inputContent = _controller.text; }); }, child: const Text('确认输入'), ), const SizedBox(height: 16), Text('你输入的内容:$_inputContent'), ], ), ); } }
内容的提问来源于stack exchange,提问作者jurasso97
相关产品推荐
相关产品推荐

