hmssdk_flutter 0.1.0 copy "hmssdk_flutter: ^0.1.0" to clipboard
hmssdk_flutter: ^0.1.0 copied to clipboard

outdated

The Flutter package for 100ms SDK.

example/lib/main.dart

import 'dart:async';

import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:hmssdk_flutter_example/common/constant.dart';
import 'package:hmssdk_flutter_example/common/ui/organisms/user_name_dialog_organism.dart';
import 'package:hmssdk_flutter_example/enum/meeting_flow.dart';
import 'package:hmssdk_flutter_example/preview/preview_page.dart';
import 'package:permission_handler/permission_handler.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);

  runZonedGuarded(
      () => runApp(HMSExampleApp()), FirebaseCrashlytics.instance.recordError);
}

class HMSExampleApp extends StatelessWidget {
  const HMSExampleApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      scaffoldMessengerKey: GlobalKey<ScaffoldMessengerState>(),
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({Key? key}) : super(key: key);

  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  TextEditingController roomIdController =
      TextEditingController(text: Constant.defaultRoomID);

  void getPermissions() async {
    await Permission.camera.request();
    await Permission.microphone.request();
  }

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    getPermissions();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('100MS'),
        actions: [
          IconButton(onPressed: () {}, icon: Icon(CupertinoIcons.settings))
        ],
      ),
      body: Center(
        child: Container(
          padding: EdgeInsets.all(16),
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              Text('Join a meeting'),
              SizedBox(
                height: 8,
              ),
              TextField(
                controller: roomIdController,
                decoration: InputDecoration(
                    hintText: 'Enter RoomId e.g. 60cb411533afe',
                    border: OutlineInputBorder(
                        borderRadius: BorderRadius.all(Radius.circular(16)))),
              ),
              SizedBox(
                height: 16,
              ),
              ElevatedButton(
                  style: ButtonStyle(
                      shape: MaterialStateProperty.all<RoundedRectangleBorder>(
                          RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(16.0),
                  ))),
                  onPressed: () async {
                    String user = await showDialog(
                        context: context,
                        builder: (_) => UserNameDialogOrganism());
                    if (user.isNotEmpty)
                      Navigator.of(context).push(MaterialPageRoute(
                          builder: (_) => PreviewPage(
                                roomId: roomIdController.text,
                                user: user,
                                flow: MeetingFlow.join,
                              )));
                  },
                  child: Container(
                    padding: const EdgeInsets.all(16.0),
                    decoration: BoxDecoration(
                        borderRadius: BorderRadius.all(Radius.circular(16))),
                    child: Row(
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: [
                        Icon(Icons.video_call_outlined),
                        SizedBox(
                          width: 16,
                        ),
                        Text('Join meeting')
                      ],
                    ),
                  ))
            ],
          ),
        ),
      ),
    );
  }
}