autoussdflutter 4.4.0 autoussdflutter: ^4.4.0 copied to clipboard
Flutter plugin for AutoUssd which allows you to build Flutter applications on top of USSD services
import 'package:autoussdflutter/autoussdflutter.dart';
import 'package:flutter/material.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
initialRoute: "/home",
routes: {
"/home": (_) => HomePage(),
},
);
}
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
_HomePageState() {
// Initialize the SDK by passing a session execution callback
// The native implementation works asynchronously we'll need
// the callback to be notified of the session execution result
AutoUssdFlutter.getInstance().registerSessionCountListener((count) {
debugPrint("Session count: $count");
});
AutoUssdFlutter.getInstance().registerSessionResultListener((result) {
debugPrint(result.status.toString());
if (result.status == ResultStatus.COMPLETED) {
Future.microtask(() {
showDialog(
context: context,
builder: (context) {
return AlertDialog(
content: Text(
result.lastContent ?? "Please wait for a confirmation message",
),
actions: [
TextButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text("Ok"),
),
],
);
},
);
});
}
});
AutoUssdFlutter.getInstance().setOverlayTheme(
OverlayThemeData(
Color(0xfffebc43).value,
Color(0xff333333).value,
Color(0xff333333).value,
Color(0xff333333).value,
Colors.white.value,
Color(0xff676767).value,
Color(0xff333333).value,
Color(0xff676767).value,
),
);
}
@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('AutoUssd Flutter Example App'),
),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
SizedBox(
width: 300,
child: Text(
"Flutter app demonstrating the use of the AutoUssd Flutter plugin",
textAlign: TextAlign.center,
),
),
const SizedBox(
height: 24,
),
SizedBox(
width: 300,
child: Card(
elevation: 8,
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 16,
vertical: 24,
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Icon(
Icons.info_outline_rounded,
size: 36,
),
Expanded(
flex: 1,
child: Text.rich(
TextSpan(
children: [
TextSpan(
text: "Tap on the button to check the remaining balance on your ",
),
TextSpan(
text: "Vodafone Cash wallet",
style: theme.textTheme.bodyText2?.copyWith(
fontWeight: FontWeight.bold,
),
),
],
),
textAlign: TextAlign.center,
),
),
],
),
),
),
),
const SizedBox(
height: 24,
),
SizedBox(
width: 300,
child: ElevatedButton(
onPressed: () {
// Execute the session with this id
AutoUssdFlutter.getInstance().executeSession(
"629e05e1751c102d57c53c0d",
{
"number": "0507810870",
"amount": "10",
"reference": "PayBuddy Text",
},
null,
[
UssdDialogOverride(
["Enter", "Pin"],
UssdDialogType.BUTTON,
),
],
);
},
child: const Text(
"Check Vodafone Momo Balance",
),
),
),
const SizedBox(
height: 24,
),
SizedBox(
width: 300,
child: ElevatedButton(
onPressed: () async {
final networks = await AutoUssdFlutter.getInstance().getDeviceSimNetworks();
showDialog(
context: context,
builder: (context) {
return AlertDialog(
content: Text(
networks.fold(
"${networks.length} ",
(accumulator, network) {
return "$accumulator, Network ${network.toMap()}";
},
),
),
);
},
);
},
child: const Text(
"List Device Networks",
),
),
),
],
),
),
),
);
}
}