enx_flutter_plugin 0.0.1 copy "enx_flutter_plugin: ^0.0.1" to clipboard
enx_flutter_plugin: ^0.0.1 copied to clipboard

outdated

A new flutter plugin project.

example/lib/main.dart

import 'dart:convert';

import 'package:enx_flutter_plugin/base.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:async';
import 'package:enx_flutter_plugin/enx_player_widget.dart';

import 'package:logger/logger.dart';

import 'package:enx_flutter_plugin/enx_flutter_plugin.dart';

void main() {
  runApp(MaterialApp(
    home: MyApp(),
    routes: <String, WidgetBuilder>{
      '/Conference': (context) => MyConfApp(
            token: _State.token,
          )
    },
  ));
}

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

class MyConfApp extends StatefulWidget {
  MyConfApp({this.token});
  final String token;
  @override
  Conference createState() => Conference();
}

class _State extends State<MyApp> {
  static String token = "";
  TextEditingController nameController = TextEditingController();
  TextEditingController passwordController = TextEditingController();

  Future<String> createRoom() async {
    var value = {'pin': '952977'};
    print(jsonEncode(value));
    var response = await http.post(
        Uri.encodeFull("https://vc-mt.vcloudx.com/getRoomByPin"),
        headers: {"Content-Type": "application/json"},
        body: jsonEncode(value));
    if (response.statusCode == 200) {
      print(response.body);
      return response.body;
    } else {
      throw Exception('Failed to load post');
    }
  }

  Future<String> createToken() async {
    var value = {
      'user_ref': "2236",
      "roomId": "5e20466b494181193f9729c1",
      "role": "moderator",
      "name": "flutter"
    };
    print(jsonEncode(value));
    var response = await http.post(
        Uri.encodeFull("https://vc-mt.vcloudx.com/createToken"),
        headers: {"Content-Type": "application/json"},
        body: jsonEncode(value));
    if (response.statusCode == 200) {
      print(response.body);
      Map<String, dynamic> user = jsonDecode(response.body);
      setState(() => token = user['token'].toString());
      print(token);
      Navigator.pushNamed(context, '/Conference');
      return response.body;
    } else {
      throw Exception('Failed to load post');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('Sample App'),
        ),
        body: Padding(
            padding: EdgeInsets.all(10),
            child: ListView(
              children: <Widget>[
                Container(
                    alignment: Alignment.center,
                    padding: EdgeInsets.all(10),
                    child: Text(
                      'Enablex',
                      style: TextStyle(
                          color: Colors.redAccent,
                          fontWeight: FontWeight.w500,
                          fontSize: 30),
                    )),
                Container(
                    alignment: Alignment.center,
                    padding: EdgeInsets.all(10),
                    child: Text(
                      'Welcome !',
                      style: TextStyle(fontSize: 20),
                    )),
                Container(
                  padding: EdgeInsets.all(10),
                  child: TextField(
                    controller: nameController,
                    decoration: InputDecoration(
                      border: OutlineInputBorder(),
                      labelText: 'User Name',
                    ),
                  ),
                ),
                Container(
                  padding: EdgeInsets.fromLTRB(10, 10, 10, 0),
                  child: TextField(
                    obscureText: true,
                    controller: passwordController,
                    decoration: InputDecoration(
                      border: OutlineInputBorder(),
                      labelText: 'Password',
                    ),
                  ),
                ),
                Container(
                    height: 100,
                    width: 300,
                    child: Row(
                      children: <Widget>[
                        // RaisedButton(
                        //   textColor: Colors.white,
                        //   color: Colors.deepPurple,
                        //   child: Text(
                        //     'Create Room',
                        //     style: TextStyle(fontSize: 20),
                        //   ),
                        //   onPressed: () {
                        //     createRoom();
                        //     //signup screen
                        //   },
                        // ),
                        RaisedButton(
                          textColor: Colors.white,
                          color: Colors.deepPurple,
                          child: Text(
                            'Join',
                            style: TextStyle(fontSize: 20),
                          ),
                          onPressed: () {
                            createRoom();
                            createToken();
                            // Navigator.pushNamed(context, '/Conference');
                            //signup screen
                          },
                        ),
                      ],
                      mainAxisAlignment: MainAxisAlignment.center,
                    ))
              ],
            )));
  }
}

class Conference extends State<MyConfApp> {
  bool _isInChannel = false;
  @override
  void initState() {
    super.initState();
    initEnxRtc();
    _addEnxrtcEventHandlers();
  }

  final logger = Logger();
  Future<void> initEnxRtc() async {
    debugPrint('log me');
    print('log me12');
    logger.e('Something has happened');
    // EnxFlutterPlugin.joinRoom('eyJ0b2tlbklkIjoiNWVjMjRhM2M5NjM0ZDRlYzg1ZWEwNDMwIiwicm9vbU1ldGEiOnsibmFtZSI6IkRlbW8gUm9vbXMiLCJzZXJ2aWNlX2lkIjoiNWU2ZjY2NzVlMGJiYTczZmNlNjRhMzYyIiwib3duZXJfcmVmIjoiMTQwNDYxN0BraWl0LmFjLmluIiwic2V0dGluZ3MiOnsiZGVzY3JpcHRpb24iOiJEZW1vJ3MgUm9vbSIsIm1vZGUiOiJncm91cCIsInNjaGVkdWxlZCI6ZmFsc2UsImFkaG9jIjpmYWxzZSwiZHVyYXRpb24iOjI0MCwicGFydGljaXBhbnRzIjoiMzAiLCJhdXRvX3JlY29yZGluZyI6ZmFsc2UsImFid2QiOnRydWUsImFjdGl2ZV90YWxrZXIiOnRydWUsImNhbnZhcyI6dHJ1ZSwicXVhbGl0eSI6IlNEIiwibW9kZXJhdG9ycyI6IjEiLCJtYXhfYWN0aXZlX3RhbGtlcnMiOiI2In0sInNpcCI6eyJlbmFibGVkIjpmYWxzZX0sImNyZWF0ZWQiOiIyMDIwLTA1LTAyVDA5OjEzOjQ5LjQzNloiLCJfaWQiOiI1ZWFkMzljZDNjMWFjNWYxMmYxZjkyOWYiLCJpc01lZGlhU2VydmVyQXZhaWxhYmxlIjpmYWxzZSwidXBkYXRlZCI6IjIwMjAtMDUtMDZUMDk6NTQ6NTIuNDk4WiJ9LCJob3N0Ijoic3Nub2RlMS5lbmFibGV4LmlvOjQ0MyIsInNlY3VyZSI6dHJ1ZSwibG9nSWQiOiJvekJXVEYiLCJnYXRld2F5IjoiIiwic2lnbmF0dXJlIjoiTXpJd05XUTFNR000WVRZell6SmlPVFl5WkdSaFpUYzJORFF3TmpCaVpUSmtZalExTWpoa01nPT0ifQ==');
  }

  void _addEnxrtcEventHandlers() {
    EnxFlutterPlugin.onRoomConnected = (Map<dynamic, dynamic> map) {
      setState(() {
        logger.e('onRoomConnectedFlutter' + jsonEncode(map));
      });
      EnxFlutterPlugin.publish();
      // var list = ['one', 'two', 'three'];
      // EnxFlutterPlugin.sendUserData(null, true, list);
      EnxFlutterPlugin.switchCamera();
      print('sjsdsd');
      print(EnxFlutterPlugin.getClientId());
      logger.e(EnxFlutterPlugin.getUserList());
    };

    EnxFlutterPlugin.onPublishedStream = (Map<dynamic, dynamic> map) {
      setState(() {
        logger.e('onPublishedStream' + jsonEncode(map));
        EnxFlutterPlugin.setupVideo(0, 0, true, 300, 200);
      });
    };

    EnxFlutterPlugin.onStreamAdded = (Map<dynamic, dynamic> map) {
      print('onStreamAdded' + jsonEncode(map));
      print('onStreamAdded Id' + map['streamId']);
      String streamId;
      setState(() {
        streamId = map['streamId'];
      });
      EnxFlutterPlugin.subscribe(streamId);
    };

    EnxFlutterPlugin.onRoomError = (Map<dynamic, dynamic> map) {
      setState(() {
        logger.e('onRoomError' + jsonEncode(map));
      });
    };
    EnxFlutterPlugin.onAudioEvent = (Map<dynamic, dynamic> map) {
      print('onAudioEvent' + jsonEncode(map));
      setState(() {});
    };

    EnxFlutterPlugin.onActiveTalkerList = (Map<dynamic, dynamic> map) {
      print('onActiveTalkerList ' + map.toString());

      // final items = (map['activeList'] as List)
      //     .map((i) => new ActiveListModel.fromJson(i));
      // _remoteUsers.clear();
      // if (items.length > 0) {
      //   setState(() {
      //     for (final item in items) {
      //       print('onActiveTalkerList item' + item.streamId.toString());

      //       // if (_remoteUsers.contains(item.streamId)) {
      //       //   return;
      //       // } else {
      //       _remoteUsers.add(item.streamId);
      //       // }
      //     }
      //   });
      // }

      EnxFlutterPlugin.sendFiles(true, []);
      print('sckgschgas');
    };

    EnxFlutterPlugin.onEventError = (Map<dynamic, dynamic> map) {
      setState(() {
        logger.e('onEventError' + jsonEncode(map));
      });
    };

    EnxFlutterPlugin.onEventInfo = (Map<dynamic, dynamic> map) {
      setState(() {
        logger.e('onEventInfo' + jsonEncode(map));
      });
    };
    EnxFlutterPlugin.onUserConnected = (Map<dynamic, dynamic> map) {
      setState(() {
        logger.e('onUserConnected' + jsonEncode(map));
      });
    };
    EnxFlutterPlugin.onUserDisConnected = (Map<dynamic, dynamic> map) {
      setState(() {
        logger.e('onUserDisConnected' + jsonEncode(map));
      });
    };
    EnxFlutterPlugin.onRoomDisConnected = (Map<dynamic, dynamic> map) {
      setState(() {
        logger.e('onRoomDisConnected' + jsonEncode(map));
      });
    };
  }

  void _toggleChannel() {
    setState(() async {
      if (_isInChannel) {
        _isInChannel = false;
        await EnxFlutterPlugin.disconnect();
      } else {
        _isInChannel = true;
        Map<String, dynamic> map2 = {
          'minWidth': 320,
          'minHeight': 180,
          'maxWidth': 1280,
          'maxHeight': 720
        };
        Map<String, dynamic> map1 = {
          'audio': true,
          'video': true,
          'data': true,
          'framerate': 30,
          'maxVideoBW': 1500,
          'minVideoBW': 150,
          'audioMuted': false,
          'videoMuted': false,
          'name': 'flutter',
          'videoSize': map2
        };
        await EnxFlutterPlugin.joinRoom(widget.token, map1, null, null);
      }
    });
  }

  Widget _viewRows() {
    return Row(
      children: <Widget>[
        for (final widget in _renderWidget)
          Expanded(
            child: Container(
              child: widget,
            ),
          )
      ],
    );
  }

  Iterable<Widget> get _renderWidget sync* {
    for (final streamId in _remoteUsers) {
      print('kklklklk');
      print(streamId);
      yield EnxPlayerWidget(streamId, local: false, width: 120, height: 120);
    }
  }

  final _remoteUsers = List<int>();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Enx Plugin example'),
        ),
        body: Container(
          child: Column(
            children: [
              Container(
                  height: 100,
                  width: 100,
                  child:
                      EnxPlayerWidget(0, local: true, width: 100, height: 100)),
              Container(height: 100, width: 100, child: _viewRows()),
              OutlineButton(
                child: Text(_isInChannel ? 'Leave Channel' : 'Join Channel'),
                onPressed: _toggleChannel,
              ),
            ],
          ),
        ),
      ),
    );
  }
}

class ActiveList {
  bool active;
  List<ActiveListModel> activeList = [];
  String event;

  ActiveList(this.active, this.activeList, this.event);

  factory ActiveList.fromJson(Map<dynamic, dynamic> json) {
    return ActiveList(
      json['active'] as bool,
      (json['activeList'] as List).map((i) {
        return ActiveListModel.fromJson(i);
      }).toList(),
      json['event'] as String,
    );
  }
}

class ActiveListModel {
  String name;
  int streamId;
  String clientId;
  String videoaspectratio;
  String mediatype;
  bool videomuted;
  String reason;

  ActiveListModel(this.name, this.streamId, this.clientId,
      this.videoaspectratio, this.mediatype, this.videomuted, this.reason);

  // convert Json to an exercise object
  factory ActiveListModel.fromJson(Map<dynamic, dynamic> json) {
    return ActiveListModel(
      json['name'] as String,
      json['streamId'] as int,
      json['clientId'] as String,
      json['videoaspectratio'] as String,
      json['mediatype'] as String,
      json['videomuted'] as bool,
      json['reason'] as String,
    );
  }
}
15
likes
30
pub points
68%
popularity

Publisher

unverified uploader

A new flutter plugin project.

Homepage

License

MIT (LICENSE)

Dependencies

flutter

More

Packages that depend on enx_flutter_plugin