Update video flux + add interactive viewer

This commit is contained in:
Thomas Fransolet 2024-01-24 16:00:41 +01:00
parent 091b89d894
commit 9855c6632e
26 changed files with 127 additions and 103 deletions

View File

@ -99,6 +99,12 @@ android {
*/ */
packagingOptions {
// Fixes duplicate libraries build issue,
// when your project uses more than one plugin that depend on C++ libs.
pickFirst 'lib/**/libc++_shared.so'
}
signingConfigs { signingConfigs {
release { release {
keyAlias keystoreProperties['keyAlias'] keyAlias keystoreProperties['keyAlias']
@ -116,6 +122,9 @@ android {
minifyEnabled true minifyEnabled true
shrinkResources true shrinkResources true
debuggable false debuggable false
proguardFiles getDefaultProguardFile(
'proguard-android-optimize.txt'),
'proguard-rules.pro'
} }
} }
} }

1
android/app/proguard-rules.pro vendored Normal file
View File

@ -0,0 +1 @@
-keep class org.videolan.libvlc.** { *; }

View File

@ -1,6 +1,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="be.unov.myhomie"> package="be.unov.myhomie">
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<application <application
android:label="MyHomie" android:label="MyHomie"
android:usesCleartextTraffic="true" android:usesCleartextTraffic="true"
@ -11,6 +13,8 @@
android:theme="@style/LaunchTheme" android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true" android:hardwareAccelerated="true"
android:resizeableActivity="true"
android:requestLegacyExternalStorage="true"
android:windowSoftInputMode="adjustResize"> android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as <!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user the Android process has started. This theme is visible to the user
@ -32,6 +36,9 @@
android:name="io.flutter.embedding.android.SplashScreenDrawable" android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background" android:resource="@drawable/launch_background"
/> />
<meta-data
android:name="android.allow_multiple_resumed_activities"
android:value="true" />
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN"/> <action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/> <category android:name="android.intent.category.LAUNCHER"/>

View File

@ -1,5 +1,5 @@
#Fri Sep 01 08:41:57 CEST 2023 #Wed Jan 17 10:40:29 CET 2024
VERSION_BUILD=91 VERSION_BUILD=99
VERSION_MAJOR=1 VERSION_MAJOR=1
VERSION_MINOR=0 VERSION_MINOR=0
VERSION_PATCH=0 VERSION_PATCH=0

View File

@ -5,7 +5,6 @@ import 'package:myhomie_app/Screens/Main/index.dart';
import 'package:myhomie_app/constants.dart'; import 'package:myhomie_app/constants.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'custom_clipper.dart';
class CustomAppBar extends StatelessWidget implements PreferredSizeWidget { class CustomAppBar extends StatelessWidget implements PreferredSizeWidget {
final double _preferredHeight = 50; final double _preferredHeight = 50;

View File

@ -44,10 +44,10 @@ class _CustomBottomNavigationBarState extends State<CustomBottomNavigationBar> {
),*/ ),*/
child: Row( //children inside bottom appbar child: Row( //children inside bottom appbar
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceEvenly, mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[ children: <Widget>[
Container( Container(
width: size.width *0.4, width: size.width *0.35,
//color: Colors.greenAccent, //color: Colors.greenAccent,
child: Row( child: Row(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
@ -60,7 +60,7 @@ class _CustomBottomNavigationBarState extends State<CustomBottomNavigationBar> {
), ),
SizedBox(width: size.width *0.2, /*child: Container(color: Colors.green,)*/), SizedBox(width: size.width *0.2, /*child: Container(color: Colors.green,)*/),
Container( Container(
width: size.width *0.4, width: size.width *0.35,
//color: Colors.greenAccent, //color: Colors.greenAccent,
child: Row( child: Row(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,

View File

@ -1,5 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flare_flutter/flare_actor.dart';
import 'package:myhomie_app/Screens/Main/MainPage.dart'; import 'package:myhomie_app/Screens/Main/MainPage.dart';
import 'package:myhomie_app/Screens/Main/index.dart'; import 'package:myhomie_app/Screens/Main/index.dart';
import 'package:myhomie_app/constants.dart'; import 'package:myhomie_app/constants.dart';
@ -25,7 +24,7 @@ class CustomNavItem extends StatelessWidget {
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(25), borderRadius: BorderRadius.circular(25),
color: kMainColor, color: id == 0 ? kMainColor : null,
), ),
width: 55, width: 55,
height: 55, height: 55,

View File

@ -50,7 +50,6 @@ class _CheckInputContainerState extends State<CheckInputContainer> {
size: 25.0, size: 25.0,
), ),
), ),
if(widget.label != null)
AutoSizeText( AutoSizeText(
widget.label, widget.label,
style: new TextStyle(fontSize: widget.fontSize, fontWeight: FontWeight.w300), style: new TextStyle(fontSize: widget.fontSize, fontWeight: FontWeight.w300),

View File

@ -1,4 +1,3 @@
import 'dart:convert';
import 'package:myhomie_app/Models/homieContext.dart'; import 'package:myhomie_app/Models/homieContext.dart';
import 'package:path/path.dart'; import 'package:path/path.dart';

View File

@ -1,6 +1,5 @@
import 'dart:convert'; import 'dart:convert';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:mqtt_client/mqtt_client.dart'; import 'package:mqtt_client/mqtt_client.dart';
import 'package:mqtt_client/mqtt_server_client.dart'; import 'package:mqtt_client/mqtt_server_client.dart';
import 'package:myhomie_app/Models/homieContext.dart'; import 'package:myhomie_app/Models/homieContext.dart';
@ -69,11 +68,7 @@ class MQTTHelper {
} }
Future<MqttServerClient?> connect(dynamic appContext) async { Future<MqttServerClient?> connect(dynamic appContext) async {
HomieAppContext homieAppContext = appContext.getContext(); HomieAppContext homieAppContext = appContext.getContext(); // TO DEBUG
if (homieAppContext == null) {
homieAppContext = new HomieAppContext(host: '192.168.31.140', userId: 'TODO');
} // TO DEBUG
print(homieAppContext.host); print(homieAppContext.host);

View File

@ -1,4 +1,3 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:myhomie_app/Components/custom_dialog.dart'; import 'package:myhomie_app/Components/custom_dialog.dart';
import 'package:myhomie_app/Helpers/PushNotificationService.dart'; import 'package:myhomie_app/Helpers/PushNotificationService.dart';

View File

@ -1,7 +1,6 @@
import 'dart:io'; import 'dart:io';
import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart'; import 'package:fluttertoast/fluttertoast.dart';
import 'package:myhomie_app/Helpers/NotificationManager.dart'; import 'package:myhomie_app/Helpers/NotificationManager.dart';

View File

@ -1,6 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mqtt_client/mqtt_server_client.dart'; import 'package:mqtt_client/mqtt_server_client.dart';
import 'dart:convert';
import 'package:myhomie_app/client.dart'; import 'package:myhomie_app/client.dart';

View File

@ -1,6 +1,5 @@
import 'package:flare_flutter/flare_actor.dart'; import 'package:flare_flutter/flare_actor.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:myhomie_app/Helpers/MQTTHelper.dart';
import 'package:myhomie_app/app_context.dart'; import 'package:myhomie_app/app_context.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';

View File

@ -1,13 +1,9 @@
import 'dart:convert';
import 'dart:typed_data';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mycore_api/api.dart'; import 'package:mycore_api/api.dart';
import 'package:mycore_api/api.dart' as API; import 'package:mycore_api/api.dart' as API;
import 'package:myhomie_app/Components/Alarms/getCurrentAlarmModeIcon.dart';
import 'package:myhomie_app/Components/Custom_Navigation_Bar/CustomAppBar.dart'; import 'package:myhomie_app/Components/Custom_Navigation_Bar/CustomAppBar.dart';
import 'package:myhomie_app/Components/check_input_container.dart';
import 'package:myhomie_app/Components/loading_common.dart'; import 'package:myhomie_app/Components/loading_common.dart';
import 'package:myhomie_app/Components/string_input_container.dart'; import 'package:myhomie_app/Components/string_input_container.dart';
import 'package:myhomie_app/Models/homieContext.dart'; import 'package:myhomie_app/Models/homieContext.dart';

View File

@ -1,13 +1,8 @@
import 'dart:convert';
import 'dart:typed_data';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mycore_api/api.dart';
import 'package:mycore_api/api.dart' as API; import 'package:mycore_api/api.dart' as API;
import 'package:myhomie_app/Components/Alarms/getCurrentAlarmModeIcon.dart';
import 'package:myhomie_app/Components/Custom_Navigation_Bar/CustomAppBar.dart'; import 'package:myhomie_app/Components/Custom_Navigation_Bar/CustomAppBar.dart';
import 'package:myhomie_app/Components/check_input_container.dart';
import 'package:myhomie_app/Components/loading_common.dart'; import 'package:myhomie_app/Components/loading_common.dart';
import 'package:myhomie_app/Components/string_input_container.dart'; import 'package:myhomie_app/Components/string_input_container.dart';
import 'package:myhomie_app/Models/homieContext.dart'; import 'package:myhomie_app/Models/homieContext.dart';

View File

@ -1,6 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mycore_api/api.dart'; import 'package:mycore_api/api.dart';
import 'package:myhomie_app/Components/loading.dart';
import 'package:myhomie_app/Components/loading_common.dart'; import 'package:myhomie_app/Components/loading_common.dart';
import 'package:myhomie_app/Models/homieContext.dart'; import 'package:myhomie_app/Models/homieContext.dart';
import 'package:myhomie_app/Screens/Main/Home/roomDetailPage.dart'; import 'package:myhomie_app/Screens/Main/Home/roomDetailPage.dart';

View File

@ -1,15 +1,10 @@
import 'dart:convert';
import 'dart:typed_data';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mycore_api/api.dart'; import 'package:mycore_api/api.dart';
import 'package:mycore_api/api.dart' as API; import 'package:mycore_api/api.dart' as API;
import 'package:myhomie_app/Components/Alarms/getCurrentAlarmModeIcon.dart';
import 'package:myhomie_app/Components/Custom_Navigation_Bar/CustomAppBar.dart'; import 'package:myhomie_app/Components/Custom_Navigation_Bar/CustomAppBar.dart';
import 'package:myhomie_app/Components/check_input_container.dart';
import 'package:myhomie_app/Components/loading_common.dart'; import 'package:myhomie_app/Components/loading_common.dart';
import 'package:myhomie_app/Components/string_input_container.dart';
import 'package:myhomie_app/Models/homieContext.dart'; import 'package:myhomie_app/Models/homieContext.dart';
import 'package:myhomie_app/Screens/Main/Devices/deviceDetailPage.dart'; import 'package:myhomie_app/Screens/Main/Devices/deviceDetailPage.dart';
import 'package:myhomie_app/app_context.dart'; import 'package:myhomie_app/app_context.dart';

View File

@ -1,5 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:mqtt_client/mqtt_server_client.dart'; import 'package:mqtt_client/mqtt_server_client.dart';
import 'package:myhomie_app/Components/Custom_Navigation_Bar/custom_app_bar.dart'; import 'package:myhomie_app/Components/Custom_Navigation_Bar/custom_app_bar.dart';
import 'package:myhomie_app/Components/Custom_Navigation_Bar/custom_bottom_navigation_bar.dart'; import 'package:myhomie_app/Components/Custom_Navigation_Bar/custom_bottom_navigation_bar.dart';
@ -16,7 +15,6 @@ import 'package:provider/provider.dart';
import '../../Models/homieContext.dart'; import '../../Models/homieContext.dart';
import 'Energy/energy.dart'; import 'Energy/energy.dart';
import 'Home/home.dart'; import 'Home/home.dart';
import 'Profile/profile.dart';
import 'Security/security.dart'; import 'Security/security.dart';
import 'index.dart'; import 'index.dart';
@ -106,39 +104,7 @@ class _MainPageState extends State<MainPage> {
], ],
), ),
), ),
floatingActionButton: FloatingActionButton( floatingActionButton: CustomNavItem(setPage: setPage, icon: NavItemIcon.home, id: 0),
backgroundColor: kMainColor,
onPressed: () {
/* var message = {
"userId": homieAppContext.userId,
"width": size.width,
"height": size.height,
"action": "button0"
};
const pubTopic = 'rpiZero/test';
final builder = MqttClientPayloadBuilder();
builder.addString(jsonEncode(message));
homieAppContext.clientMQTT.publishMessage(pubTopic, MqttQos.atLeastOnce, builder.payload);
var message2 = {
"state": "toggle"
};
const pubTopic2 = 'zigbee2mqtt/GU10Bureau/set';
final builder2 = MqttClientPayloadBuilder();
builder2.addString(jsonEncode(message2));
print("Send request");
homieAppContext.clientMQTT.publishMessage(pubTopic2, MqttQos.atLeastOnce, builder2.payload);
*/
},
child: CustomNavItem(setPage: setPage, icon: NavItemIcon.home, id: 0),
),
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked, floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
bottomNavigationBar: CustomBottomNavigationBar(), bottomNavigationBar: CustomBottomNavigationBar(),
), ),

View File

@ -1,5 +1,3 @@
import 'dart:convert';
import 'dart:typed_data';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mycore_api/api.dart'; import 'package:mycore_api/api.dart';

View File

@ -6,6 +6,7 @@ import 'package:myhomie_app/Models/homieContext.dart';
import 'package:myhomie_app/Screens/Main/Security/alarmDetailPage.dart'; import 'package:myhomie_app/Screens/Main/Security/alarmDetailPage.dart';
import 'package:myhomie_app/Screens/Main/Security/changeAlarmMode.dart'; import 'package:myhomie_app/Screens/Main/Security/changeAlarmMode.dart';
import 'package:myhomie_app/Screens/Main/Security/streamWidget.dart'; import 'package:myhomie_app/Screens/Main/Security/streamWidget.dart';
import 'package:myhomie_app/Screens/Main/Security/videoPlayerNetwork.dart';
import 'package:myhomie_app/app_context.dart'; import 'package:myhomie_app/app_context.dart';
import 'package:myhomie_app/constants.dart'; import 'package:myhomie_app/constants.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -112,9 +113,9 @@ class _SecurityScreenState extends State<SecurityScreen> {
Container( Container(
height: size.height * 0.3, height: size.height * 0.3,
width: size.width * 0.9, width: size.width * 0.9,
child: ImageStreamWidget( child: VideoPlayerNetwork(initialFluxUrl: "http://192.168.31.140:8765/picture/4/current")/*ImageStreamWidget(
initialImageUrl: "http://192.168.31.140:8765/picture/4/current", initialImageUrl: "http://192.168.31.140:8765/picture/4/current",
) /*VideoPlayerWidget( )*/ /*VideoPlayerWidget(
videoUrl: "http://192.168.31.140:8084/", //"http://192.168.31.140:8084/", videoUrl: "http://192.168.31.140:8084/", //"http://192.168.31.140:8084/",
)*/, )*/,
), ),

View File

@ -0,0 +1,53 @@
import 'package:flutter/material.dart';
import 'package:flutter_vlc_player/flutter_vlc_player.dart';
class VideoPlayerNetwork extends StatefulWidget {
final String initialFluxUrl;
VideoPlayerNetwork({required this.initialFluxUrl});
@override
_VideoPlayerNetworkState createState() => _VideoPlayerNetworkState();
}
class _VideoPlayerNetworkState extends State<VideoPlayerNetwork> {
late VlcPlayerController _videoPlayerController;
@override
void initState() {
super.initState();
_videoPlayerController = VlcPlayerController.network(
'rtsp://192.168.31.110/live0', // 'http://192.168.31.140:8084'
hwAcc: HwAcc.full,
autoPlay: true,
options: VlcPlayerOptions(rtp: VlcRtpOptions([
VlcRtpOptions.rtpOverRtsp(true),
])),
);
}
@override
void dispose() async {
super.dispose();
await _videoPlayerController.stopRendererScanning();
await _videoPlayerController.dispose();
}
@override
Widget build(BuildContext context) {
return Center(
child: Container(
width: 500,
height: 500,
child: InteractiveViewer(
child: VlcPlayer(
controller: _videoPlayerController,
aspectRatio: 16 / 9,
placeholder: Center(child: CircularProgressIndicator()),
),
),
),
);
}
}

View File

@ -1,6 +1,4 @@
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:myhomie_app/Helpers/PushNotificationService.dart';
import 'package:myhomie_app/client.dart'; import 'package:myhomie_app/client.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -35,7 +33,7 @@ void main() async {
final MyApp myApp = MyApp( final MyApp myApp = MyApp(
initialRoute: initialRoute, initialRoute: initialRoute,
homieAppContext: localContext!, homieAppContext: localContext,
); );
await Firebase.initializeApp(); await Firebase.initializeApp();

View File

@ -8,9 +8,11 @@ import Foundation
import firebase_core import firebase_core
import firebase_messaging import firebase_messaging
import sqflite import sqflite
import video_player_avfoundation
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin")) FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin"))
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin"))
} }

View File

@ -157,10 +157,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: collection name: collection
sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.17.2" version: "1.18.0"
convert: convert:
dependency: transitive dependency: transitive
description: description:
@ -323,6 +323,22 @@ packages:
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
flutter_vlc_player:
dependency: "direct main"
description:
name: flutter_vlc_player
sha256: b869251c9b186f2e3d21c103734e842c90cb5b2d46af0c35c6ecc4c46cdefce6
url: "https://pub.dev"
source: hosted
version: "7.4.1"
flutter_vlc_player_platform_interface:
dependency: transitive
description:
name: flutter_vlc_player_platform_interface
sha256: b161dde841368d330be82c5ee6f40b29dadc4227167bf2770d949f576ae2d9b1
url: "https://pub.dev"
source: hosted
version: "2.0.3"
flutter_web_plugins: flutter_web_plugins:
dependency: transitive dependency: transitive
description: flutter description: flutter
@ -452,10 +468,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: meta name: meta
sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.9.1" version: "1.10.0"
mime: mime:
dependency: transitive dependency: transitive
description: description:
@ -648,18 +664,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: stack_trace name: stack_trace
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.11.0" version: "1.11.1"
stream_channel: stream_channel:
dependency: transitive dependency: transitive
description: description:
name: stream_channel name: stream_channel
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.1" version: "2.1.2"
stream_transform: stream_transform:
dependency: transitive dependency: transitive
description: description:
@ -696,10 +712,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.6.0" version: "0.6.1"
timer_builder: timer_builder:
dependency: "direct main" dependency: "direct main"
description: description:
@ -768,10 +784,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: video_player name: video_player
sha256: "3fd106c74da32f336dc7feb65021da9b0207cb3124392935f1552834f7cce822" sha256: fbf28ce8bcfe709ad91b5789166c832cb7a684d14f571a81891858fefb5bb1c2
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.7.0" version: "2.8.2"
video_player_android: video_player_android:
dependency: transitive dependency: transitive
description: description:
@ -784,10 +800,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: video_player_avfoundation name: video_player_avfoundation
sha256: f5f5b7fe8c865be8a57fe80c2dca130772e1db775b7af4e5c5aa1905069cfc6c sha256: "309e3962795e761be010869bae65c0b0e45b5230c5cee1bec72197ca7db040ed"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.9" version: "2.5.6"
video_player_platform_interface: video_player_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -816,10 +832,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: web name: web
sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.1.4-beta" version: "0.3.0"
web_socket_channel: web_socket_channel:
dependency: transitive dependency: transitive
description: description:
@ -845,5 +861,5 @@ packages:
source: hosted source: hosted
version: "3.1.2" version: "3.1.2"
sdks: sdks:
dart: ">=3.1.0-185.0.dev <3.3.0" dart: ">=3.2.0 <3.3.0"
flutter: ">=3.7.0-0" flutter: ">=3.16.0"

View File

@ -44,8 +44,9 @@ dependencies:
auto_size_text: ^3.0.0 auto_size_text: ^3.0.0
firebase_core: ^2.15.0 firebase_core: ^2.15.0
firebase_messaging: ^14.6.6 firebase_messaging: ^14.6.6
video_player: ^2.7.0 video_player: ^2.8.2
timer_builder: ^2.0.0 timer_builder: ^2.0.0
flutter_vlc_player: ^7.4.1
dev_dependencies: dev_dependencies:
flutter_test: flutter_test: