Flutter USSD服务插件ussd_serv的使用

Flutter USSD服务插件ussd_serv的使用

开始使用

本项目是一个用于Flutter的插件包,包含Android和/或iOS平台特定的实现代码。

对于希望开始Flutter开发的帮助,可以查看在线文档,其中提供了教程、示例、移动开发指南以及完整的API引用。


完整示例代码

以下是使用ussd_serv插件的完整示例代码。该示例展示了如何通过Flutter调用USSD服务。

import 'package:flutter/material.dart';
import 'package:ussd_example/global.dart';
import 'package:ussd_example/test.dart';
import 'dart:async';

void main() {
  runApp(const App());
}

class App extends StatefulWidget {
  const App({super.key});

  [@override](/user/override)
  State<App> createState() => _AppState();
}

class _AppState extends State<App> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: MyApp(),
    );
  }
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String qriosResponse = ""; // 用于存储USSD服务的响应结果

  Future<void> initiatePurchase1() async {
    await globalUssdServices.makePurchase(
            "*425*0320*57552554245942*711972439052*70175954323*100*1*7*1#") ??
        "";
  }

  Future<void> initiatePurchase2() async {
    await globalUssdServices.makePurchase(
            "*425*0138*57552554245942*711972439052*70175954323*100000000000000000*1*7*1#") ??
        "";
  }

  [@override](/user/override)
  void initState() {
    successStream.listen((event) {
      if (!mounted) {
        return;
      }
      qriosResponse = event;
      setState(() {});
    });
    failsureStream.listen((event) {
      if (!mounted) {
        return;
      }
      qriosResponse = event;
      setState(() {});
    });
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: SizedBox(
          width: double.infinity,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text(qriosResponse), // 显示USSD服务的响应结果
              const SizedBox(
                height: 24,
              ),
              ElevatedButton(
                  onPressed: () {
                    qriosResponse = "";
                    setState(() {});

                    initiatePurchase1(); // 调用第一个USSD服务
                  },
                  child: const Text("启动购买1")),
              const SizedBox(
                height: 44,
              ),
              Text(qriosResponse), // 显示USSD服务的响应结果
              const SizedBox(
                height: 24,
              ),
              ElevatedButton(
                  onPressed: () {
                    qriosResponse = "";
                    setState(() {});

                    initiatePurchase2(); // 调用第二个USSD服务
                  },
                  child: const Text("启动购买2")),
              const SizedBox(
                height: 24,
              ),
              ElevatedButton(
                  onPressed: () {
                    Navigator.of(context).push(
                        MaterialPageRoute(builder: (context) => const Test()));
                  },
                  child: const Text("启动购买2"))
            ],
          ),
        ));
  }
}

更多关于Flutter USSD服务插件ussd_serv的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter USSD服务插件ussd_serv的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,ussd_service 插件可以用来发送USSD请求并接收响应。USSD(Unstructured Supplementary Service Data)是一种用于移动电话和电信运营商网络之间的通信协议。它通常用于查询余额、充值、订阅服务等。

安装插件

首先,你需要在 pubspec.yaml 文件中添加 ussd_service 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  ussd_service: ^1.0.0

然后运行 flutter pub get 来安装插件。

使用插件

  1. 导入插件

    在你的 Dart 文件中导入 ussd_service 插件:

    import 'package:ussd_service/ussd_service.dart';
    
  2. 发送USSD请求

    使用 UssdService.sendUssd 方法发送USSD请求。你需要传入USSD代码和一个回调函数来处理响应。

    void sendUssdRequest() async {
      String ussdCode = "*123#"; // 替换为你的USSD代码
      try {
        String response = await UssdService.sendUssd(ussdCode);
        print("USSD Response: $response");
      } catch (e) {
        print("Failed to send USSD: $e");
      }
    }
    
  3. 处理权限

    在某些情况下,发送USSD请求可能需要特定的权限。确保在 AndroidManifest.xml 文件中添加以下权限:

    <uses-permission android:name="android.permission.CALL_PHONE" />
    

    你还需要在运行时请求这些权限。可以使用 permission_handler 插件来请求权限。

  4. 处理错误

    USSD请求可能会失败,例如由于网络问题或权限问题。确保在代码中处理这些错误情况。

示例代码

以下是一个完整的示例代码,展示如何使用 ussd_service 插件发送USSD请求并处理响应:

import 'package:flutter/material.dart';
import 'package:ussd_service/ussd_service.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'USSD Example',
      home: USSDExample(),
    );
  }
}

class USSDExample extends StatefulWidget {
  [@override](/user/override)
  _USSDExampleState createState() => _USSDExampleState();
}

class _USSDExampleState extends State<USSDExample> {
  String _response = '';

  void _sendUssdRequest() async {
    String ussdCode = "*123#"; // 替换为你的USSD代码
    try {
      String response = await UssdService.sendUssd(ussdCode);
      setState(() {
        _response = response;
      });
    } catch (e) {
      setState(() {
        _response = "Failed to send USSD: $e";
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('USSD Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: _sendUssdRequest,
              child: Text('Send USSD'),
            ),
            SizedBox(height: 20),
            Text('Response: $_response'),
          ],
        ),
      ),
    );
  }
}
回到顶部