flutter_vonage 0.0.9 copy "flutter_vonage: ^0.0.9" to clipboard
flutter_vonage: ^0.0.9 copied to clipboard

vonage client sdk for flutter

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_vonage/flutter_vonage.dart';
import 'dart:convert' as convert;

import 'chat_page.dart';
import 'voice_page.dart';

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late VonageController _controller;
  bool isLogin = false;
  String loginStatus = "未登录";
  String? curName, targetName;

  @override
  void initState() {
    super.initState();
    _controller = VonageController();
    initVonage();
    _controller.addVonageCallback("main", (type, info) {
      if (type == Constants.CONNECTION_RESULT) {
        //  DISCONNECTED,CONNECTING,CONNECTED,UNKNOWN;
        var tmp = Uri.decodeComponent(info);
        var resp = convert.jsonDecode(tmp);

        var status = resp['status'];

        if ("CONNECTING" == status) {
          setState(() {
            loginStatus = "登录中";
          });
        } else if ("CONNECTED" == status) {
          setState(() {
            loginStatus = "登录成功";
            isLogin = true;
          });
        } else {
          setState(() {
            loginStatus = "登录失败";
            isLogin = false;
          });
        }
      }
    });
  }

  @override
  void dispose() {
    super.dispose();
    _controller.removeVonageCallback("main");
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Vonage demo'),
        ),
        body: isLogin
            ? Center(
                child: Wrap(
                  direction: Axis.vertical,
                  crossAxisAlignment: WrapCrossAlignment.center,
                  children: [
                    TextButton(
                      onPressed: () {
                        Navigator.push(
                          context,
                          MaterialPageRoute(builder: (BuildContext context) {
                            return ChatPage();
                          }),
                        );
                      },
                      child: Text("聊天演示"),
                    ),
                    TextButton(
                      onPressed: () {
                        Navigator.push(
                          context,
                          MaterialPageRoute(builder: (BuildContext context) {
                            return VoicePage(curName, targetName);
                          }),
                        );
                      },
                      child: Text("电话演示"),
                    ),
                  ],
                ),
              )
            : Center(
                child: Wrap(
                  direction: Axis.vertical,
                  crossAxisAlignment: WrapCrossAlignment.center,
                  children: [
                    Text(loginStatus),
                    TextButton(onPressed: () => loginByAlice(), child: Text("Alice登录")),
                    TextButton(onPressed: () => loginByBob(), child: Text("Bob登录")),
                  ],
                ),
              ),
      ),
    );
  }

  initVonage() async {
    await _controller.init(InitParams());
  }

  loginByAlice() async {
    curName = "Alice";
    targetName = "Bob";
    var phone = "";
    var jwtToken =
        "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE2MzEzNDcyNTgsImV4cCI6MTYzMTM2ODg1OCwianRpIjoiVmZ0SjRHcEduT2RuIiwiYXBwbGljYXRpb25faWQiOiIyNTBlOWJmYy1mYWE1LTRhNjktYTJjZi1iN2Y2NWJiZDFkMDkiLCJzdWIiOiJBbGljZSIsImFjbCI6eyJwYXRocyI6eyIvKi91c2Vycy8qKiI6e30sIi8qL2NvbnZlcnNhdGlvbnMvKioiOnt9LCIvKi9zZXNzaW9ucy8qKiI6e30sIi8qL2RldmljZXMvKioiOnt9LCIvKi9pbWFnZS8qKiI6e30sIi8qL21lZGlhLyoqIjp7fSwiLyovYXBwbGljYXRpb25zLyoqIjp7fSwiLyovcHVzaC8qKiI6e30sIi8qL2tub2NraW5nLyoqIjp7fSwiLyovbGVncy8qKiI6e319fX0.puAxcXszI7Q2lLlbrfcunbxIjNvVsrrLgD0gOsuS8eqxQm_cdaCzD--jdT0JlTt_skVgU15oAmmjjKZpNg9Y_gV_xljUCazfaSL-fUeJq9gGREMFH9fAboGFLjR5ObA32zD_W4BxiyDsk-iGhgSPVZsmB2xxkqQwyGPVyDQSPy658gmP2XRcCNIrwKxtQoE8lM60GAVYDQuuatdp5EnByuAKRzbtg3pg4h2bkg9DoiEFQPbBgK3pdeTKQAuhD4IlfrQbWFrme07GbHk1jZANIlzZiR24f5c_Fxs7-4f2k2GzjOanG0M7gLPWwmexMqmjrehN9_-JdBp0pGVeeUfG6A";

    // await _controller.login(LoginParams(phone, jwtToken));

    await _controller.playKeySound(KeySoundParams("dial"));
  }

  loginByBob() async {
    curName = "Bob";
    targetName = "Alice";
    var phone = "";
    var jwtToken =
        "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2MzEzNDcwMzgsImp0aSI6ImUyZTQ3NjAwLTEyZDUtMTFlYy1iOTU5LTQ5NWRlNDRlOWYyZSIsInN1YiI6IkJvYiIsImV4cCI6MTYzMTQzMzQzNywiYWNsIjp7InBhdGhzIjp7Ii8qL3VzZXJzLyoqIjp7fSwiLyovY29udmVyc2F0aW9ucy8qKiI6e30sIi8qL3Nlc3Npb25zLyoqIjp7fSwiLyovZGV2aWNlcy8qKiI6e30sIi8qL2ltYWdlLyoqIjp7fSwiLyovbWVkaWEvKioiOnt9LCIvKi9hcHBsaWNhdGlvbnMvKioiOnt9LCIvKi9wdXNoLyoqIjp7fSwiLyova25vY2tpbmcvKioiOnt9LCIvKi9sZWdzLyoqIjp7fX19LCJhcHBsaWNhdGlvbl9pZCI6IjI1MGU5YmZjLWZhYTUtNGE2OS1hMmNmLWI3ZjY1YmJkMWQwOSJ9.NW78ZRd-l4o9bP6iNfgtOZ58Dy86vZkh3I5lPTpy1xbDJB0bY30fiIv8QD5OrZZcgrEPoW55mXit0DsIqJoM_eSkCjCFeL_PWjxLT4n4kBYx012vtdG-mk2sda3TOhLsINORMddiSkKN_0lPg_lKBx59SnUpUf6-smG7MO3bWyzTIQtjnRNhq1OUvAZrDobF8bJwM_xpi4x1lM4bHKaipwvw1gu7MH8eS6CppMgVvGuq8rK5Vd3OfATLIUu_v27HfyeKZlbBTMnYjY6aPgbRhzlzujjJUoaS2BaQTeAiRAPUnNYFC-J1fCWT5vpReZnh21EhwhWbT3RUFGb7BUOD9w";


    // await _controller.login(LoginParams(phone, jwtToken));

    await _controller.playKeySound(KeySoundParams("error"));
    // await _controller.playKeySound(KeySoundParams("waiting"));
  }
}
0
likes
105
pub points
10%
popularity

Publisher

unverified uploader

vonage client sdk for flutter

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

flutter, synchronized

More

Packages that depend on flutter_vonage