* Add flutter_lints package * Use key in widget constructors lint: use_key_in_widget_constructors * Unnecessary new keyword lint: unnecessary_new * Prefer const with constant constructors * Exclude protobuf files from analyzer * Private field could be final * Annotate overridden members * Use initializing formals when possible * Don't access members with `this` unless avoiding shadowing * Prefer is! operator * Use isEmpty instead of length * Use collection literals when possible * Revert comment changes * Cleaner null testing * Misc fixes * Avoid using `forEach` with a function literal * Prefer `final` over `var` where applicable * Enforce stricter type-checking * Ignore VS Code files * Flutter format * Prefer using lowerCamelCase for constant names * flutter format -l 100 * Disable `avoid_print` for examples * Slight improvements to example Should solve lint error: no_logic_in_create_state
29 lines
861 B
Dart
29 lines
861 B
Dart
import 'package:flutter_webrtc/flutter_webrtc.dart';
|
|
import 'package:livekit_client/src/track/audio_track.dart';
|
|
|
|
import '../errors.dart';
|
|
import 'options.dart';
|
|
|
|
class LocalAudioTrack extends AudioTrack {
|
|
LocalAudioTrack(String name, MediaStreamTrack track, MediaStream stream)
|
|
: super(name, track, stream);
|
|
|
|
/// Creates a new audio track from the default audio input device.
|
|
static Future<LocalAudioTrack> createTrack([LocalAudioTrackOptions? options]) async {
|
|
try {
|
|
final stream = await navigator.mediaDevices.getUserMedia(<String, dynamic>{
|
|
'audio': true,
|
|
'video': false,
|
|
});
|
|
|
|
if (stream.getAudioTracks().isEmpty) {
|
|
return Future.error(TrackCreateError());
|
|
}
|
|
|
|
return LocalAudioTrack('', stream.getAudioTracks().first, stream);
|
|
} catch (e) {
|
|
return Future.error(e);
|
|
}
|
|
}
|
|
}
|