tencent_conference_uikit 4.2.0 copy "tencent_conference_uikit: ^4.2.0" to clipboard
tencent_conference_uikit: ^4.2.0 copied to clipboard

tencent_conference_uikit is a UIKit about audio&video room launched by Tencent Cloud.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:provider/provider.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:tencent_chat_uikit/tencent_chat_uikit.dart' show ChatLocalizations;

import 'package:tencent_conference_uikit/base/widget/global.dart';
import 'package:tencent_conference_uikit/tencent_conference_uikit.dart';
import 'package:tuikit_atomic_x/atomicx.dart';
import 'common/index.dart';
import 'l10n/app_localizations.dart';
import 'pages/index.dart';

void main() {
  runApp(const MyApp());
  SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(statusBarColor: Colors.transparent));
  SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final themeState = ThemeState();
  @override
  void initState() {
    super.initState();
    themeState.setThemeMode(ThemeType.light);
  }

  @override
  Widget build(BuildContext context) {
    return MultiProvider(providers: [
      ChangeNotifierProvider.value(value: LocaleProvider()),
    ], child: Builder(builder: (context) {
      return ComponentTheme(
        themeState: themeState,
        child: MaterialApp(
          navigatorObservers: [RoomNavigatorObserver.instance],
          theme: AppTheme.lightTheme,
          localizationsDelegates: const [
            AppLocalizations.delegate,
            GlobalMaterialLocalizations.delegate,
            GlobalWidgetsLocalizations.delegate,
            GlobalCupertinoLocalizations.delegate,
            ...RoomLocalizations.localizationsDelegates,
            ...BarrageLocalizations.localizationsDelegates,
            ChatLocalizations.delegate,
            AtomicLocalizations.delegate,
          ],
          locale: Provider
              .of<LocaleProvider>(context)
              .locale,
          supportedLocales: const [Locale('en'), Locale('zh')],
          builder: (context, child) =>
              Scaffold(
                resizeToAvoidBottomInset: false,
                body: GestureDetector(
                  onTap: () {
                    _hideKeyboard(context);
                  },
                  child: child,
                ),
              ),
          home: Navigator(
            key: Global.secondaryNavigatorKey,
            onGenerateRoute: (settings) =>
                MaterialPageRoute(
                  builder: (BuildContext context) {
                    return const LoginPage();
                  },
                ),
          ),
        ),
      );
    },),);
  }

  void _hideKeyboard(BuildContext context) {
    FocusScopeNode currentFocus = FocusScope.of(context);
    if (!currentFocus.hasPrimaryFocus && currentFocus.focusedChild != null) {
      FocusManager.instance.primaryFocus?.unfocus();
    }
  }
}