001f688729
* add audio_session package * `AudioManager` initial design * try to integrate audio manager * configure audio session * `DisposeAware` disposing if already published causes exception. * organize * guard flutter_webrtc calls * websocket async fix * use `ConnectionState` instead of `_isClosed` and `isReconnecting` * change create audio track defaults * update protos * protocol 3 speaker updates * fix exception * emit `RoomDisconnectedEvent` only once * fix exception * keep track of local / remote audio tracks * explicit types * manage track state * re-structure audio management * change defaults * unpublish all * use experimental build * change defaults * configuring is optional * call native `RTCAudioSession.setConfiguration` * defaults adjustment * iOS only for now * use lib 92.4515.07 * clean up * revert audio options for now * remove pod source * rename apple related audio * `createListener` method * organize native audio * `SpeakingChangedEvent` only on `Participant` * refactoring * fix ios compile * fix configure audio only for iOS logic * minor fix & clean up * change dispose logic * format protos * fix unpublishTrack * `createListener` into a mixin * simplify * use flutter_webrtc master * unpublish for example * update ios icon * android icon * web icon * favicon
32 lines
755 B
Dart
32 lines
755 B
Dart
import 'package:flutter/material.dart';
|
|
import 'package:livekit_example/theme.dart';
|
|
import 'package:logging/logging.dart';
|
|
|
|
import 'pages/connect.dart';
|
|
|
|
void main() {
|
|
// configure logs for debugging
|
|
Logger.root.level = Level.FINE;
|
|
Logger.root.onRecord.listen((record) {
|
|
print('${record.level.name}: ${record.message}');
|
|
});
|
|
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
|
|
runApp(const LiveKitExampleApp());
|
|
}
|
|
|
|
class LiveKitExampleApp extends StatelessWidget {
|
|
//
|
|
const LiveKitExampleApp({
|
|
Key? key,
|
|
}) : super(key: key);
|
|
|
|
@override
|
|
Widget build(BuildContext context) => MaterialApp(
|
|
title: 'LiveKit Flutter Example',
|
|
theme: LiveKitTheme().buildThemeData(context),
|
|
home: const ConnectPage(),
|
|
);
|
|
}
|