ussd_advanced_flutter 1.0.0 copy "ussd_advanced_flutter: ^1.0.0" to clipboard
ussd_advanced_flutter: ^1.0.0 copied to clipboard

PlatformAndroid

A Flutter plugin to send and read USSD codes programmatically on Android with dual-SIM support, real-time response streaming, and timeout handling.

example/lib/main.dart

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(),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
1
likes
140
points
36
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin to send and read USSD codes programmatically on Android with dual-SIM support, real-time response streaming, and timeout handling.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, permission_handler

More

Packages that depend on ussd_advanced_flutter

Packages that implement ussd_advanced_flutter