flutter_vonage 0.0.9 flutter_vonage: ^0.0.9 copied to clipboard
vonage client sdk for flutter
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"));
}
}