hot_recharge 1.0.0+1 copy "hot_recharge: ^1.0.0+1" to clipboard
hot_recharge: ^1.0.0+1 copied to clipboard

a hot-recharge plugin for mobile airtime topup and zesa recharge

example/lib/main.dart

import 'package:flutter/material.dart';

import 'package:hot_recharge/hot_recharge.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'HR Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Hot-Recharge Plugin Demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>();
  TextEditingController amountController;
  TextEditingController phoneController;
  HotRecharge hotRecharge;

  bool loading = false;

  // can add custom message to sent to user
  final mesg =
      'Recharge of \$ %AMOUNT% is successful.\nThe best %COMPANYNAME%!';

  @override
  void initState() {
    setupHR();
    amountController = TextEditingController();
    phoneController = TextEditingController();
    super.initState();
  }

  @override
  void dispose() {
    amountController.dispose();
    phoneController.dispose();
    super.dispose();
  }

  void showSnackbar(String message, Color color) {
    ScaffoldMessenger.of(context).showSnackBar(
      SnackBar(
        backgroundColor: color,
        content: Text(message),
      ),
    );
  }

  void setupHR() {
    hotRecharge = HotRecharge(
      accessCode: '<your-acc-email>',
      accessPswd: '<your-acc-pswd>',
      //enableLogger: true, // enable detailed request logger on console. Use while TESTING only
    );
  }

  Future<void> rechargeNumber() async {
    setState(() {
      loading = true;
    });

    var response = await hotRecharge.topupNumber(
      double.parse(amountController.text),
      phoneController.text,
      customMessage: mesg,
    );

    if (response.rechargeResponse == RechargeResponse.SUCCESS) {
      final PinlessRecharge result = response.apiResponse;
      showSnackbar(result.replyMsg, Colors.green);
    }

    // there was a problem
    else {
      showSnackbar('failed to sent airtime: ${response.message}', Colors.red);
    }

    setState(() {
      loading = false;
      phoneController.clear();
      amountController.clear();
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: scaffoldKey,
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: SingleChildScrollView(
        padding: const EdgeInsets.all(15),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            TextField(
              controller: phoneController,
              keyboardType: TextInputType.phone,
              decoration: InputDecoration(
                labelText: 'Number to recharge',
                hintText: '07xxxxxx.. or 08xxxxx..',
                hintStyle: TextStyle(
                  color: Colors.grey,
                  fontStyle: FontStyle.italic,
                ),
              ),
            ),
            SizedBox(height: 30),
            TextField(
              controller: amountController,
              keyboardType: TextInputType.numberWithOptions(
                signed: true,
                decimal: true,
              ),
              decoration: InputDecoration(
                labelText: 'Amount to recharge',
              ),
            ),
            SizedBox(height: 30),
            loading
                ? CircularProgressIndicator()
                : Container(
                    color: Colors.blue,
                    child: TextButton(
                      onPressed: () async => await rechargeNumber(),
                      child: Text(
                        'Recharge',
                      ),
                    ),
                  ),
          ],
        ),
      ),
    );
  }
}
8
likes
40
pub points
0%
popularity

Publisher

unverified uploader

a hot-recharge plugin for mobile airtime topup and zesa recharge

Repository (GitHub)
View/report issues

License

BSD-3-Clause (LICENSE)

Dependencies

flutter, http, logger, uuid

More

Packages that depend on hot_recharge