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
125
points
17
downloads

Publisher

unverified uploader

Weekly Downloads

vonage client sdk for flutter

Homepage

Documentation

API reference

License

MIT (license)

Dependencies

flutter, synchronized

More

Packages that depend on flutter_vonage

Packages that implement flutter_vonage