Phase 4: FFmpeg conditional import (web-safe), remove unused dio + pointycastle (~230KB saved)
This commit is contained in:
parent
96468521cf
commit
6cb0a921c9
|
|
@ -1,7 +1,6 @@
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:ffmpeg_kit_flutter_new/ffmpeg_kit.dart';
|
import '../services/media/ffmpeg.dart';
|
||||||
import 'package:ffmpeg_kit_flutter_new/return_code.dart';
|
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import '../services/auth_service.dart';
|
import '../services/auth_service.dart';
|
||||||
import '../services/api_service.dart';
|
import '../services/api_service.dart';
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:ffmpeg_kit_flutter_new/ffmpeg_kit.dart';
|
import '../../services/media/ffmpeg.dart';
|
||||||
import 'package:ffmpeg_kit_flutter_new/return_code.dart';
|
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import '../../services/image_upload_service.dart';
|
import '../../services/image_upload_service.dart';
|
||||||
import '../../providers/api_provider.dart';
|
import '../../providers/api_provider.dart';
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,7 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:google_fonts/google_fonts.dart';
|
import 'package:google_fonts/google_fonts.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:video_player/video_player.dart';
|
import 'package:video_player/video_player.dart';
|
||||||
import 'package:ffmpeg_kit_flutter_new/ffmpeg_kit.dart';
|
import '../../services/media/ffmpeg.dart';
|
||||||
import 'package:ffmpeg_kit_flutter_new/return_code.dart';
|
|
||||||
|
|
||||||
import '../../models/sojorn_media_result.dart';
|
import '../../models/sojorn_media_result.dart';
|
||||||
import '../../theme/app_theme.dart';
|
import '../../theme/app_theme.dart';
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,7 @@ import 'dart:io';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:video_player/video_player.dart';
|
import 'package:video_player/video_player.dart';
|
||||||
import 'package:ffmpeg_kit_flutter_new/ffmpeg_kit.dart';
|
import '../../../services/media/ffmpeg.dart';
|
||||||
import 'package:ffmpeg_kit_flutter_new/return_code.dart';
|
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import '../../../providers/quip_upload_provider.dart';
|
import '../../../providers/quip_upload_provider.dart';
|
||||||
import '../../../services/image_upload_service.dart';
|
import '../../../services/image_upload_service.dart';
|
||||||
|
|
|
||||||
2
sojorn_app/lib/services/media/ffmpeg.dart
Normal file
2
sojorn_app/lib/services/media/ffmpeg.dart
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
/// Conditional export: web gets the stub, mobile/desktop gets the real package.
|
||||||
|
export 'ffmpeg_stub.dart' if (dart.library.io) 'ffmpeg_io.dart';
|
||||||
4
sojorn_app/lib/services/media/ffmpeg_io.dart
Normal file
4
sojorn_app/lib/services/media/ffmpeg_io.dart
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
/// Mobile/desktop: re-export the real ffmpeg_kit_flutter_new classes.
|
||||||
|
export 'package:ffmpeg_kit_flutter_new/ffmpeg_kit.dart';
|
||||||
|
export 'package:ffmpeg_kit_flutter_new/ffmpeg_session.dart';
|
||||||
|
export 'package:ffmpeg_kit_flutter_new/return_code.dart';
|
||||||
48
sojorn_app/lib/services/media/ffmpeg_stub.dart
Normal file
48
sojorn_app/lib/services/media/ffmpeg_stub.dart
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
/// Web-safe stubs that mirror the ffmpeg_kit_flutter_new API surface.
|
||||||
|
/// These classes compile on web but always return failure / no-op.
|
||||||
|
|
||||||
|
class FFmpegKit {
|
||||||
|
static Future<FFmpegSession> execute(String command) async {
|
||||||
|
return FFmpegSession._();
|
||||||
|
}
|
||||||
|
|
||||||
|
static Future<FFmpegSession> executeAsync(
|
||||||
|
String command, [
|
||||||
|
Function? completeCallback,
|
||||||
|
Function? logCallback,
|
||||||
|
Function? statisticsCallback,
|
||||||
|
]) async {
|
||||||
|
final session = FFmpegSession._();
|
||||||
|
completeCallback?.call(session);
|
||||||
|
return session;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Future<FFmpegSession> executeWithArguments(
|
||||||
|
List<String> arguments, [
|
||||||
|
Function? completeCallback,
|
||||||
|
Function? logCallback,
|
||||||
|
Function? statisticsCallback,
|
||||||
|
]) async {
|
||||||
|
final session = FFmpegSession._();
|
||||||
|
completeCallback?.call(session);
|
||||||
|
return session;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class FFmpegSession {
|
||||||
|
FFmpegSession._();
|
||||||
|
|
||||||
|
Future<ReturnCode?> getReturnCode() async => ReturnCode._(-1);
|
||||||
|
Future<String?> getOutput() async => null;
|
||||||
|
Future<String?> getAllLogsAsString() async => null;
|
||||||
|
}
|
||||||
|
|
||||||
|
class ReturnCode {
|
||||||
|
final int _value;
|
||||||
|
ReturnCode._(this._value);
|
||||||
|
|
||||||
|
static bool isSuccess(ReturnCode? code) => false;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() => 'ReturnCode($_value)';
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'package:ffmpeg_kit_flutter_new/ffmpeg_kit.dart';
|
import 'media/ffmpeg.dart';
|
||||||
import 'package:ffmpeg_kit_flutter_new/ffmpeg_session.dart';
|
|
||||||
import 'package:ffmpeg_kit_flutter_new/return_code.dart';
|
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
|
|
||||||
class VideoStitchingService {
|
class VideoStitchingService {
|
||||||
|
|
|
||||||
|
|
@ -345,22 +345,6 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.4.1"
|
version: "0.4.1"
|
||||||
dio:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: dio
|
|
||||||
sha256: b9d46faecab38fc8cc286f80bc4d61a3bb5d4ac49e51ed877b4d6706efe57b25
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "5.9.1"
|
|
||||||
dio_web_adapter:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: dio_web_adapter
|
|
||||||
sha256: "7586e476d70caecaf1686d21eee7247ea43ef5c345eab9e0cc3583ff13378d78"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.1.1"
|
|
||||||
fake_async:
|
fake_async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -1469,14 +1453,6 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.8"
|
version: "2.1.8"
|
||||||
pointycastle:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: pointycastle
|
|
||||||
sha256: "92aa3841d083cc4b0f4709b5c74fd6409a3e6ba833ffc7dc6a8fee096366acf5"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "4.0.0"
|
|
||||||
pool:
|
pool:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,6 @@ dependencies:
|
||||||
|
|
||||||
# HTTP & API
|
# HTTP & API
|
||||||
http: ^1.2.2
|
http: ^1.2.2
|
||||||
dio: ^5.7.0
|
|
||||||
|
|
||||||
# UI & Utilities
|
# UI & Utilities
|
||||||
cupertino_icons: ^1.0.8
|
cupertino_icons: ^1.0.8
|
||||||
|
|
@ -63,7 +62,6 @@ dependencies:
|
||||||
# E2EE Cryptography
|
# E2EE Cryptography
|
||||||
cryptography: ^2.5.0
|
cryptography: ^2.5.0
|
||||||
convert: ^3.1.1
|
convert: ^3.1.1
|
||||||
pointycastle: ^4.0.0
|
|
||||||
file_picker: ^10.3.10
|
file_picker: ^10.3.10
|
||||||
universal_html: ^2.0.8
|
universal_html: ^2.0.8
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue