ussd_advanced_flutter 1.0.0
ussd_advanced_flutter: ^1.0.0 copied to clipboard
A Flutter plugin to send and read USSD codes programmatically on Android with dual-SIM support, real-time response streaming, and timeout handling.
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:ussd_advanced_flutter/ussd_advanced_flutter.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String? last;
List<String> all = [];
@override
void initState() {
super.initState();
UssdAdvancedFlutter.ussdStream.listen((s) {
setState(() {
last = s;
all.add(s);
});
});
}
Future<void> _ensurePermissions() async {
// ask for CALL_PHONE
final status = await Permission.phone.request();
if (!status.isGranted) {
// open app settings
openAppSettings();
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('USSD plugin example')),
body: Padding(
padding: const EdgeInsets.all(12.0),
child: Column(
children: [
ElevatedButton(
onPressed: () async {
await _ensurePermissions();
// open accessibility settings so user can enable service
await UssdAdvancedFlutter.openAccessibilitySettings();
},
child: const Text('Enable accessibility & permissions'),
),
const SizedBox(height: 12),
ElevatedButton(
onPressed: () async {
await UssdAdvancedFlutter.sendUssd("*100#", simSlot: 1);
},
child: const Text('Send USSD (SIM 1)'),
),
ElevatedButton(
onPressed: () async {
try {
final resp = await UssdAdvancedFlutter.sendUssdForResponse(
"*100#",
simSlot: 0,
timeout: Duration(seconds: 3),
);
print("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
print(resp);
print("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(resp ?? 'no response')),
);
} catch (e) {
print("errorrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr");
print(e);
print("errorrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr");
}
},
child: const Text('Send USSD & wait for single response'),
),
const SizedBox(height: 12),
Text('Last: ${last ?? "—"}'),
Expanded(
child: ListView(
children: all.map((e) => ListTile(title: Text(e))).toList(),
),
),
],
),
),
),
);
}
}