mirror of
https://bitbucket.org/myhomie/myhomie_app.git
synced 2025-12-06 00:51:19 +00:00
Update video flux + add interactive viewer
This commit is contained in:
parent
091b89d894
commit
9855c6632e
@ -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
1
android/app/proguard-rules.pro
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
-keep class org.videolan.libvlc.** { *; }
|
||||||
@ -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"/>
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
@ -50,14 +50,13 @@ 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),
|
maxLines: 2,
|
||||||
maxLines: 2,
|
maxFontSize: widget.fontSize,
|
||||||
maxFontSize: widget.fontSize,
|
textAlign: TextAlign.center,
|
||||||
textAlign: TextAlign.center,
|
),
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
Padding(
|
Padding(
|
||||||
|
|||||||
@ -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';
|
||||||
|
|||||||
@ -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);
|
||||||
|
|
||||||
|
|||||||
@ -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';
|
||||||
|
|||||||
@ -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';
|
||||||
|
|||||||
@ -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';
|
||||||
|
|
||||||
|
|||||||
@ -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';
|
||||||
|
|
||||||
|
|||||||
@ -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';
|
||||||
|
|||||||
@ -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';
|
||||||
|
|||||||
@ -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';
|
||||||
|
|||||||
@ -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';
|
||||||
|
|||||||
@ -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(),
|
||||||
),
|
),
|
||||||
|
|||||||
@ -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';
|
||||||
|
|||||||
@ -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/",
|
||||||
)*/,
|
)*/,
|
||||||
),
|
),
|
||||||
|
|||||||
53
lib/Screens/Main/Security/videoPlayerNetwork.dart
Normal file
53
lib/Screens/Main/Security/videoPlayerNetwork.dart
Normal 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()),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -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();
|
||||||
|
|||||||
@ -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"))
|
||||||
}
|
}
|
||||||
|
|||||||
52
pubspec.lock
52
pubspec.lock
@ -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"
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user