import 'dart:async'; import 'package:sms_maintained/sms_maintained.dart'; import '../models/sms_message.dart'; class SmsReaderService { Future> queryAllSms() async { final messages = []; final all = await SmsQuery().querySms( kinds: [SmsQueryKind.Inbox, SmsQueryKind.Sent], ); for (final s in all) { messages.add(SmsMessage( phoneNumber: s.address ?? '', contactName: s.sender ?? s.address, content: s.body ?? '', type: s.kind == SmsQueryKind.Sent ? 'sent' : 'received', smsDate: DateTime.fromMillisecondsSinceEpoch(s.date!).toUtc().toIso8601String(), )); } return messages; } Stream listenToIncoming() { final controller = StreamController.broadcast(); SmsReceiver().onSmsReceived!.listen((SmsMessage sms) { controller.add(SmsMessage( phoneNumber: sms.address ?? '', contactName: sms.sender ?? sms.address, content: sms.body ?? '', type: 'received', smsDate: DateTime.now().toUtc().toIso8601String(), )); }); return controller.stream; } }