53 lines
1.1 KiB
Dart
53 lines
1.1 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:didvan/providers/core_provider.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:flutter_vibrate/flutter_vibrate.dart';
|
|
import 'package:record/record.dart';
|
|
|
|
class ChatState extends CoreProvier {
|
|
final _recorder = Record();
|
|
|
|
File? recordedFile;
|
|
|
|
bool isRecording = false;
|
|
|
|
void deleteRecordedFile() {
|
|
recordedFile!.delete();
|
|
recordedFile = null;
|
|
notifyListeners();
|
|
}
|
|
|
|
Future<void> startRecording() async {
|
|
await _recorder.hasPermission();
|
|
if (!kIsWeb) {
|
|
Vibrate.feedback(FeedbackType.medium);
|
|
}
|
|
isRecording = true;
|
|
_recorder.start();
|
|
notifyListeners();
|
|
}
|
|
|
|
Future<void> stopRecording(bool sendImidiately) async {
|
|
final path = await _recorder.stop();
|
|
isRecording = false;
|
|
if (path == null) {
|
|
notifyListeners();
|
|
return;
|
|
}
|
|
if (kIsWeb) {
|
|
final uri = Uri.file(path);
|
|
recordedFile = File.fromUri(uri);
|
|
} else {
|
|
recordedFile = File(path);
|
|
}
|
|
if (sendImidiately) {
|
|
await sendMessage();
|
|
} else {
|
|
notifyListeners();
|
|
}
|
|
}
|
|
|
|
Future<void> sendMessage() async {}
|
|
}
|