在真实Android设备上如何查看Flutter中print函数的输出?
真实设备上Flutter日志失效的替代方案及问题排查
首先注意你的代码里存在两处问题:
signInWithEmailAndPassword是异步方法,未添加await,导致print(userCredential)输出的是Future对象而非实际的UserCredential实例,可能让你误以为日志未输出;debugprint是拼写错误,正确方法名为debugPrint(驼峰命名),错误拼写会直接导致该方法无法执行。
先修正代码基础问题:
try { final email = _emailController.text; final password = _passwordController.text; // 添加await获取实际认证结果 final userCredential = await FirebaseAuth.instance.signInWithEmailAndPassword( email: email, password: password ); print(userCredential); } on FirebaseAuthException catch (e) { log(e.code); debugPrint(e.code); print(e.code); }
针对真实设备上print()、log()、debugPrint()失效的情况,提供以下替代方案:
使用Flutter命令行日志工具
直接在终端执行flutter logs命令,它会实时抓取真实设备上Flutter应用的所有日志输出,不受App内部日志配置影响,即使App内日志方法失效,也能通过该工具查看完整日志。显式指定日志级别
导入dart:developer包后,给log()方法指定更高的日志级别,避免被系统过滤:import 'dart:developer'; // 在catch块中使用 log(e.code, level: Level.info.value);引入第三方日志库
比如logger库,它的日志输出更稳定,支持分级输出、格式化展示,还能将日志写入文件便于后续查看:// 先在pubspec.yaml添加依赖:logger: ^2.0.2+1 import 'package:logger/logger.dart'; final logger = Logger(); // 在catch块中使用 logger.e(e.code); // 输出错误级别日志确认运行模式
Release模式下Flutter会默认禁用debugPrint和部分print输出,确保使用flutter run(Debug模式)或flutter run --profile(Profile模式)启动应用。调整设备日志过滤规则
部分安卓设备会默认过滤Debug级日志,可通过设备开发者选项调整日志输出级别,或使用adb logcat -s flutter命令仅过滤Flutter相关日志。
内容的提问来源于stack exchange,提问作者Justic46
相关产品推荐
相关产品推荐

