【发布时间】:2021-09-03 21:00:18
【问题描述】:
_getMessages() 函数用于从手机中获取 SMS 消息并将它们存储在 _messages 中。此外,在 UI 部分,我有一个重新加载按钮 (floatingActionButton),它调用 _getMessages()。现在,预期的行为是,一旦打开应用程序,就应该获取并显示现有消息,并且稍后到达的新消息,要在屏幕上查看它们,用户可以按下重新加载按钮,再次调用_getMessages() 并显示新消息。
此代码在调试 apk 中有效,但发布的 apk 在安装在其他设备上(非调试模式)时,应用程序不起作用。另外,我使用Telephony 来获取消息。是不是因为函数和变量在_HomeState 中的定义方式?所以,我不确定错误是代码还是包。提前致谢。
import 'package:OffQuiz/home/Quiz/quizCard.dart';
import 'package:OffQuiz/shared/appBar.dart';
import 'package:flutter/material.dart';
import 'package:telephony/telephony.dart';
class Home extends StatefulWidget {
Home({Key? key, required this.title}) : super(key: key);
final String title;
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
final telephony = Telephony.instance;
List<SmsMessage> _messages = [];
@override
void initState() {
super.initState();
_getMessages();
}
Future<void> _getMessages() async {
List<SmsMessage> temp;
temp = await telephony
.getInboxSms(columns: [SmsColumn.ADDRESS, SmsColumn.BODY]);
setState(() {
_messages = temp;
});
}
@override
Widget build(BuildContext context) {
// getMessages();
return Scaffold(
appBar: appBar("OffQuiz"),
body: _messages.length != 0
? ListView(
children: _messages
.map((quiz) => QuizCard(
quiz: quiz,
))
.toList(),
)
: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
"Please reload to fetch the latest messages",
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.w400,
color: Colors.grey),
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _getMessages,
child: Icon(
Icons.refresh,
color: Colors.white,
),
),
);
}
}
【问题讨论】:
-
尝试使用
flutter run --release命令在发布模式下调试应用 -
@prahack
flutter run --release确实在调试设备上安装了已发布的 apk,但我不确定如何进行调试,如果您分享一个文档的链接来解释如何使用上述命令进行调试。
标签: flutter dart debugging setstate release-apk