mirror of
https://github.com/SyncrowIOT/syncrow-app.git
synced 2025-11-27 16:14:54 +00:00
user_agreement and privacy_policy sign up and menu
This commit is contained in:
@ -1,5 +1,5 @@
|
|||||||
buildscript {
|
buildscript {
|
||||||
ext.kotlin_version = '1.7.10'
|
ext.kotlin_version = '1.9.23'
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
|||||||
@ -3,6 +3,8 @@ import 'package:flutter/widgets.dart';
|
|||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:flutter_svg/svg.dart';
|
import 'package:flutter_svg/svg.dart';
|
||||||
import 'package:syncrow_app/features/auth/bloc/auth_cubit.dart';
|
import 'package:syncrow_app/features/auth/bloc/auth_cubit.dart';
|
||||||
|
import 'package:syncrow_app/features/menu/bloc/privacy_policy.dart';
|
||||||
|
import 'package:syncrow_app/features/menu/bloc/user_agreement.dart';
|
||||||
import 'package:syncrow_app/features/shared_widgets/default_button.dart';
|
import 'package:syncrow_app/features/shared_widgets/default_button.dart';
|
||||||
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_medium.dart';
|
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_medium.dart';
|
||||||
import 'package:syncrow_app/features/shared_widgets/text_widgets/title_medium.dart';
|
import 'package:syncrow_app/features/shared_widgets/text_widgets/title_medium.dart';
|
||||||
@ -202,6 +204,82 @@ class SignUpView extends StatelessWidget {
|
|||||||
hint: "At least 8 characters"),
|
hint: "At least 8 characters"),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 40),
|
const SizedBox(height: 40),
|
||||||
|
Center(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(
|
||||||
|
horizontal: 16.0),
|
||||||
|
child: Text.rich(
|
||||||
|
TextSpan(
|
||||||
|
text:
|
||||||
|
'By signing up you agree to our ',
|
||||||
|
style: const TextStyle(
|
||||||
|
color: Colors
|
||||||
|
.white, // White text color
|
||||||
|
fontSize:
|
||||||
|
14, // Adjust font size to match the design
|
||||||
|
),
|
||||||
|
children: [
|
||||||
|
WidgetSpan(
|
||||||
|
child: GestureDetector(
|
||||||
|
onTap: () {
|
||||||
|
Navigator.of(context)
|
||||||
|
.push(MaterialPageRoute(
|
||||||
|
builder: (context) =>
|
||||||
|
const UserAgreement(),
|
||||||
|
));
|
||||||
|
},
|
||||||
|
child: const Text(
|
||||||
|
'Terms & Conditions',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors
|
||||||
|
.white, // Text color
|
||||||
|
fontWeight: FontWeight
|
||||||
|
.bold, // Bold text
|
||||||
|
decoration: TextDecoration
|
||||||
|
.underline, // Underline the text
|
||||||
|
decorationColor: Colors
|
||||||
|
.white, // Set the underline color to white
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const TextSpan(
|
||||||
|
text: ' and ',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.white),
|
||||||
|
),
|
||||||
|
WidgetSpan(
|
||||||
|
child: GestureDetector(
|
||||||
|
onTap: () {
|
||||||
|
Navigator.of(context)
|
||||||
|
.push(MaterialPageRoute(
|
||||||
|
builder: (context) =>
|
||||||
|
const PrivacyPolicy(),
|
||||||
|
));
|
||||||
|
},
|
||||||
|
child: const Text(
|
||||||
|
'Privacy Policy',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors
|
||||||
|
.white, // Text color
|
||||||
|
fontWeight: FontWeight
|
||||||
|
.bold, // Bold text
|
||||||
|
decoration: TextDecoration
|
||||||
|
.underline, // Underline the text
|
||||||
|
decorationColor: Colors
|
||||||
|
.white, // Set the underline color to white
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
textAlign: TextAlign
|
||||||
|
.center, // Center align the text
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(height: 40),
|
||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
|
|||||||
@ -1,12 +1,35 @@
|
|||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
import 'package:syncrow_app/services/api/profile_api.dart';
|
||||||
|
|
||||||
part 'menu_state.dart';
|
part 'menu_state.dart';
|
||||||
|
|
||||||
class MenuCubit extends Cubit<MenuState> {
|
class MenuCubit extends Cubit<MenuState> {
|
||||||
MenuCubit() : super(MenuInitial());
|
MenuCubit() : super(MenuInitial());
|
||||||
|
|
||||||
static MenuCubit of(context) => BlocProvider.of<MenuCubit>(context);
|
static MenuCubit of(context) => BlocProvider.of<MenuCubit>(context);
|
||||||
|
|
||||||
String name = '';
|
String name = '';
|
||||||
|
String userAgreementHtml = "";
|
||||||
|
String privacyPolicyHtml = "";
|
||||||
|
|
||||||
|
Future<void> fetchAgreement() async {
|
||||||
|
try {
|
||||||
|
emit(MenuLoading());
|
||||||
|
final response = await ProfileApi().fetchUserAgreement();
|
||||||
|
userAgreementHtml = response;
|
||||||
|
emit(MenuLoaded(userAgreementHtml));
|
||||||
|
} catch (error) {
|
||||||
|
emit(MenuError(error.toString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> fetchPrivacyPolicy() async {
|
||||||
|
try {
|
||||||
|
emit(MenuLoading());
|
||||||
|
final response = await ProfileApi().fetchPrivacyPolicy();
|
||||||
|
privacyPolicyHtml = response;
|
||||||
|
emit(MenuLoaded(privacyPolicyHtml));
|
||||||
|
} catch (error) {
|
||||||
|
emit(MenuError(error.toString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,3 +3,22 @@ part of 'menu_cubit.dart';
|
|||||||
abstract class MenuState {}
|
abstract class MenuState {}
|
||||||
|
|
||||||
class MenuInitial extends MenuState {}
|
class MenuInitial extends MenuState {}
|
||||||
|
|
||||||
|
class MenuLoading extends MenuState {}
|
||||||
|
|
||||||
|
class MenuLoaded extends MenuState {
|
||||||
|
final String userAgreementHtml;
|
||||||
|
MenuLoaded(this.userAgreementHtml);
|
||||||
|
}
|
||||||
|
|
||||||
|
class MenuError extends MenuState {
|
||||||
|
final String message;
|
||||||
|
|
||||||
|
MenuError(this.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
class MenuNameUpdated extends MenuState {
|
||||||
|
final String name;
|
||||||
|
|
||||||
|
MenuNameUpdated(this.name);
|
||||||
|
}
|
||||||
|
|||||||
47
lib/features/menu/bloc/privacy_policy.dart
Normal file
47
lib/features/menu/bloc/privacy_policy.dart
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
import 'package:flutter_widget_from_html/flutter_widget_from_html.dart';
|
||||||
|
import 'package:syncrow_app/features/menu/bloc/menu_cubit.dart';
|
||||||
|
import 'package:syncrow_app/features/shared_widgets/default_scaffold.dart';
|
||||||
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
|
class PrivacyPolicy extends StatelessWidget {
|
||||||
|
const PrivacyPolicy({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
final menuCubit = MenuCubit.of(context);
|
||||||
|
menuCubit.fetchPrivacyPolicy();
|
||||||
|
return DefaultScaffold(
|
||||||
|
title: 'Privacy Policy',
|
||||||
|
child: BlocBuilder<MenuCubit, MenuState>(
|
||||||
|
builder: (context, state) {
|
||||||
|
if (state is MenuLoading) {
|
||||||
|
return const Center(child: CircularProgressIndicator());
|
||||||
|
} else if (state is MenuLoaded) {
|
||||||
|
return ListView(
|
||||||
|
children: [
|
||||||
|
HtmlWidget(
|
||||||
|
state.userAgreementHtml,
|
||||||
|
onTapUrl: (url) async {
|
||||||
|
final uri = Uri.parse(url);
|
||||||
|
await launchUrl(uri, mode: LaunchMode.externalApplication);
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
} else if (state is MenuError) {
|
||||||
|
return Center(
|
||||||
|
child: Text(
|
||||||
|
'Error: ${state.message}',
|
||||||
|
style: const TextStyle(color: Colors.red),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return const Center(child: Text('Loading User Agreement...'));
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
48
lib/features/menu/bloc/user_agreement.dart
Normal file
48
lib/features/menu/bloc/user_agreement.dart
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
import 'package:flutter_widget_from_html/flutter_widget_from_html.dart';
|
||||||
|
import 'package:syncrow_app/features/menu/bloc/menu_cubit.dart';
|
||||||
|
import 'package:syncrow_app/features/shared_widgets/default_scaffold.dart';
|
||||||
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
|
class UserAgreement extends StatelessWidget {
|
||||||
|
const UserAgreement({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
final menuCubit = MenuCubit.of(context);
|
||||||
|
menuCubit.fetchAgreement();
|
||||||
|
return DefaultScaffold(
|
||||||
|
title: 'User Agreement',
|
||||||
|
child: BlocBuilder<MenuCubit, MenuState>(
|
||||||
|
builder: (context, state) {
|
||||||
|
if (state is MenuLoading) {
|
||||||
|
return const Center(child: CircularProgressIndicator());
|
||||||
|
} else if (state is MenuLoaded) {
|
||||||
|
return ListView(
|
||||||
|
children: [
|
||||||
|
HtmlWidget(
|
||||||
|
state
|
||||||
|
.userAgreementHtml,
|
||||||
|
onTapUrl: (url) async {
|
||||||
|
final uri = Uri.parse(url);
|
||||||
|
await launchUrl(uri, mode: LaunchMode.externalApplication);
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
} else if (state is MenuError) {
|
||||||
|
return Center(
|
||||||
|
child: Text(
|
||||||
|
'Error: ${state.message}',
|
||||||
|
style: const TextStyle(color: Colors.red),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return const Center(child: Text('Loading User Agreement...'));
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,6 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:syncrow_app/features/auth/bloc/auth_cubit.dart';
|
import 'package:syncrow_app/features/auth/bloc/auth_cubit.dart';
|
||||||
|
import 'package:syncrow_app/features/menu/bloc/menu_cubit.dart';
|
||||||
import 'package:syncrow_app/features/menu/bloc/profile_bloc/profile_bloc.dart';
|
import 'package:syncrow_app/features/menu/bloc/profile_bloc/profile_bloc.dart';
|
||||||
import 'package:syncrow_app/features/scene/bloc/create_scene/create_scene_bloc.dart';
|
import 'package:syncrow_app/features/scene/bloc/create_scene/create_scene_bloc.dart';
|
||||||
import 'package:syncrow_app/features/scene/bloc/effective_period/effect_period_bloc.dart';
|
import 'package:syncrow_app/features/scene/bloc/effective_period/effect_period_bloc.dart';
|
||||||
@ -34,6 +35,7 @@ class MyApp extends StatelessWidget {
|
|||||||
BlocProvider(create: (context) => CreateSceneBloc()),
|
BlocProvider(create: (context) => CreateSceneBloc()),
|
||||||
BlocProvider(create: (context) => SceneBloc()),
|
BlocProvider(create: (context) => SceneBloc()),
|
||||||
BlocProvider(create: (context) => ProfileBloc()),
|
BlocProvider(create: (context) => ProfileBloc()),
|
||||||
|
BlocProvider(create: (context) => MenuCubit()),
|
||||||
],
|
],
|
||||||
child: MaterialApp(
|
child: MaterialApp(
|
||||||
navigatorKey: NavigationService.navigatorKey,
|
navigatorKey: NavigationService.navigatorKey,
|
||||||
|
|||||||
@ -53,7 +53,8 @@ abstract class ApiEndpoints {
|
|||||||
//POST
|
//POST
|
||||||
static const String addUnit = '/unit';
|
static const String addUnit = '/unit';
|
||||||
static const String addUnitToUser = '/unit/user';
|
static const String addUnitToUser = '/unit/user';
|
||||||
static const String verifyInvitationCode = '/user/{userUuid}/spaces/verify-code';
|
static const String verifyInvitationCode =
|
||||||
|
'/user/{userUuid}/spaces/verify-code';
|
||||||
|
|
||||||
//GET
|
//GET
|
||||||
static const String unitByUuid = '/unit/';
|
static const String unitByUuid = '/unit/';
|
||||||
@ -63,8 +64,7 @@ abstract class ApiEndpoints {
|
|||||||
static const String unitUser = '/unit/user/';
|
static const String unitUser = '/unit/user/';
|
||||||
static const String invitationCode =
|
static const String invitationCode =
|
||||||
'/projects/{projectUuid}/communities/{communityUuid}/spaces/{unitUuid}/invitation-code';
|
'/projects/{projectUuid}/communities/{communityUuid}/spaces/{unitUuid}/invitation-code';
|
||||||
static const String activationCode =
|
static const String activationCode = '/invite-user/activation';
|
||||||
'/invite-user/activation';
|
|
||||||
|
|
||||||
//PUT
|
//PUT
|
||||||
static const String renameUnit = '/unit/{unitUuid}';
|
static const String renameUnit = '/unit/{unitUuid}';
|
||||||
@ -97,7 +97,8 @@ abstract class ApiEndpoints {
|
|||||||
static const String controlGroup = '/group/control';
|
static const String controlGroup = '/group/control';
|
||||||
//GET
|
//GET
|
||||||
static const String groupBySpace = '/group/{unitUuid}';
|
static const String groupBySpace = '/group/{unitUuid}';
|
||||||
static const String devicesByGroupName = '/group/{unitUuid}/devices/{groupName}';
|
static const String devicesByGroupName =
|
||||||
|
'/group/{unitUuid}/devices/{groupName}';
|
||||||
|
|
||||||
static const String groupByUuid = '/group/{groupUuid}';
|
static const String groupByUuid = '/group/{groupUuid}';
|
||||||
//DELETE
|
//DELETE
|
||||||
@ -109,7 +110,8 @@ abstract class ApiEndpoints {
|
|||||||
static const String addDeviceToRoom = '/device/room';
|
static const String addDeviceToRoom = '/device/room';
|
||||||
static const String addDeviceToGroup = '/device/group';
|
static const String addDeviceToGroup = '/device/group';
|
||||||
static const String controlDevice = '/device/{deviceUuid}/control';
|
static const String controlDevice = '/device/{deviceUuid}/control';
|
||||||
static const String firmwareDevice = '/device/{deviceUuid}/firmware/{firmwareVersion}';
|
static const String firmwareDevice =
|
||||||
|
'/device/{deviceUuid}/firmware/{firmwareVersion}';
|
||||||
static const String getDevicesByUserId = '/device/user/{userId}';
|
static const String getDevicesByUserId = '/device/user/{userId}';
|
||||||
static const String getDevicesByUnitId = '/device/unit/{unitUuid}';
|
static const String getDevicesByUnitId = '/device/unit/{unitUuid}';
|
||||||
static const String openDoorLock = '/door-lock/open/{doorLockUuid}';
|
static const String openDoorLock = '/door-lock/open/{doorLockUuid}';
|
||||||
@ -120,8 +122,10 @@ abstract class ApiEndpoints {
|
|||||||
static const String deviceByUuid = '/device/{deviceUuid}';
|
static const String deviceByUuid = '/device/{deviceUuid}';
|
||||||
static const String deviceFunctions = '/device/{deviceUuid}/functions';
|
static const String deviceFunctions = '/device/{deviceUuid}/functions';
|
||||||
static const String gatewayApi = '/device/gateway/{gatewayUuid}/devices';
|
static const String gatewayApi = '/device/gateway/{gatewayUuid}/devices';
|
||||||
static const String deviceFunctionsStatus = '/device/{deviceUuid}/functions/status';
|
static const String deviceFunctionsStatus =
|
||||||
static const String powerClamp = '/device/{powerClampUuid}/power-clamp/status';
|
'/device/{deviceUuid}/functions/status';
|
||||||
|
static const String powerClamp =
|
||||||
|
'/device/{powerClampUuid}/power-clamp/status';
|
||||||
|
|
||||||
///Device Permission Module
|
///Device Permission Module
|
||||||
//POST
|
//POST
|
||||||
@ -149,14 +153,16 @@ abstract class ApiEndpoints {
|
|||||||
|
|
||||||
static const String getUnitAutomation = '/automation/{unitUuid}';
|
static const String getUnitAutomation = '/automation/{unitUuid}';
|
||||||
|
|
||||||
static const String getAutomationDetails = '/automation/details/{automationId}';
|
static const String getAutomationDetails =
|
||||||
|
'/automation/details/{automationId}';
|
||||||
|
|
||||||
/// PUT
|
/// PUT
|
||||||
static const String updateScene = '/scene/tap-to-run/{sceneId}';
|
static const String updateScene = '/scene/tap-to-run/{sceneId}';
|
||||||
|
|
||||||
static const String updateAutomation = '/automation/{automationId}';
|
static const String updateAutomation = '/automation/{automationId}';
|
||||||
|
|
||||||
static const String updateAutomationStatus = '/automation/status/{automationId}';
|
static const String updateAutomationStatus =
|
||||||
|
'/automation/status/{automationId}';
|
||||||
|
|
||||||
/// DELETE
|
/// DELETE
|
||||||
static const String deleteScene = '/scene/tap-to-run/{sceneId}';
|
static const String deleteScene = '/scene/tap-to-run/{sceneId}';
|
||||||
@ -165,8 +171,10 @@ abstract class ApiEndpoints {
|
|||||||
|
|
||||||
//////////////////////Door Lock //////////////////////
|
//////////////////////Door Lock //////////////////////
|
||||||
//online
|
//online
|
||||||
static const String addTemporaryPassword = '/door-lock/temporary-password/online/{doorLockUuid}';
|
static const String addTemporaryPassword =
|
||||||
static const String getTemporaryPassword = '/door-lock/temporary-password/online/{doorLockUuid}';
|
'/door-lock/temporary-password/online/{doorLockUuid}';
|
||||||
|
static const String getTemporaryPassword =
|
||||||
|
'/door-lock/temporary-password/online/{doorLockUuid}';
|
||||||
|
|
||||||
//one-time offline
|
//one-time offline
|
||||||
static const String addOneTimeTemporaryPassword =
|
static const String addOneTimeTemporaryPassword =
|
||||||
@ -198,7 +206,8 @@ abstract class ApiEndpoints {
|
|||||||
'/door-lock/temporary-password/online/{doorLockUuid}/{passwordId}';
|
'/door-lock/temporary-password/online/{doorLockUuid}/{passwordId}';
|
||||||
|
|
||||||
static const String saveSchedule = '/schedule/{deviceUuid}';
|
static const String saveSchedule = '/schedule/{deviceUuid}';
|
||||||
static const String getSchedule = '/schedule/{deviceUuid}?category={category}';
|
static const String getSchedule =
|
||||||
|
'/schedule/{deviceUuid}?category={category}';
|
||||||
static const String changeSchedule = '/schedule/enable/{deviceUuid}';
|
static const String changeSchedule = '/schedule/enable/{deviceUuid}';
|
||||||
static const String deleteSchedule = '/schedule/{deviceUuid}/{scheduleId}';
|
static const String deleteSchedule = '/schedule/{deviceUuid}/{scheduleId}';
|
||||||
static const String reportLogs =
|
static const String reportLogs =
|
||||||
@ -207,9 +216,13 @@ abstract class ApiEndpoints {
|
|||||||
static const String statusBatch = '/device/status/batch';
|
static const String statusBatch = '/device/status/batch';
|
||||||
static const String deviceScene = '/device/{deviceUuid}/scenes';
|
static const String deviceScene = '/device/{deviceUuid}/scenes';
|
||||||
|
|
||||||
static const String fourSceneByName = '/device/{deviceUuid}/scenes?switchName={switchName}';
|
static const String fourSceneByName =
|
||||||
|
'/device/{deviceUuid}/scenes?switchName={switchName}';
|
||||||
|
|
||||||
static const String resetDevice = '/factory/reset/{deviceUuid}';
|
static const String resetDevice = '/factory/reset/{deviceUuid}';
|
||||||
static const String unAssignScenesDevice = '/device/{deviceUuid}/scenes?switchName={switchName}';
|
static const String unAssignScenesDevice =
|
||||||
|
'/device/{deviceUuid}/scenes?switchName={switchName}';
|
||||||
static const String getDeviceLogs = '/device/report-logs/{uuid}?code={code}';
|
static const String getDeviceLogs = '/device/report-logs/{uuid}?code={code}';
|
||||||
|
static const String terms = '/terms';
|
||||||
|
static const String policy = '/policy';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -116,4 +116,24 @@ class ProfileApi {
|
|||||||
});
|
});
|
||||||
return response as List<TimeZone>;
|
return response as List<TimeZone>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future fetchUserAgreement() async {
|
||||||
|
final response = await _httpService.get(
|
||||||
|
path: ApiEndpoints.terms,
|
||||||
|
showServerMessage: true,
|
||||||
|
expectedResponseModel: (json) {
|
||||||
|
return json['data'];
|
||||||
|
});
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future fetchPrivacyPolicy() async {
|
||||||
|
final response = await _httpService.get(
|
||||||
|
path: ApiEndpoints.policy,
|
||||||
|
showServerMessage: true,
|
||||||
|
expectedResponseModel: (json) {
|
||||||
|
return json['data'];
|
||||||
|
});
|
||||||
|
return response;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,11 @@
|
|||||||
//ignore_for_file: constant_identifier_names
|
//ignore_for_file: constant_identifier_names
|
||||||
import 'dart:ui';
|
import 'dart:ui';
|
||||||
import 'package:syncrow_app/features/devices/model/function_model.dart';
|
import 'package:syncrow_app/features/devices/model/function_model.dart';
|
||||||
|
import 'package:syncrow_app/features/menu/bloc/privacy_policy.dart';
|
||||||
|
import 'package:syncrow_app/features/menu/bloc/user_agreement.dart';
|
||||||
// import 'package:syncrow_app/features/menu/view/widgets/create_home/create_home_view.dart';
|
// import 'package:syncrow_app/features/menu/view/widgets/create_home/create_home_view.dart';
|
||||||
import 'package:syncrow_app/features/menu/view/widgets/join_home/join_home_view.dart';
|
import 'package:syncrow_app/features/menu/view/widgets/join_home/join_home_view.dart';
|
||||||
import 'package:syncrow_app/features/menu/view/widgets/manage_home/manage_home_view.dart';
|
import 'package:syncrow_app/features/menu/view/widgets/manage_home/manage_home_view.dart';
|
||||||
import 'package:syncrow_app/features/menu/view/widgets/privacy/privacy_view.dart';
|
|
||||||
import 'package:syncrow_app/features/menu/view/widgets/securty/view/securty_view.dart';
|
import 'package:syncrow_app/features/menu/view/widgets/securty/view/securty_view.dart';
|
||||||
import 'package:syncrow_app/generated/assets.dart';
|
import 'package:syncrow_app/generated/assets.dart';
|
||||||
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
|
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
|
||||||
@ -99,7 +100,9 @@ Map<String, DeviceType> devicesTypesMap = {
|
|||||||
Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
||||||
DeviceType.AC: [
|
DeviceType.AC: [
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'switch', type: functionTypesMap['Boolean'], values: ValueModel.fromJson({})),
|
code: 'switch',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'mode',
|
code: 'mode',
|
||||||
type: functionTypesMap['Enum'],
|
type: functionTypesMap['Enum'],
|
||||||
@ -122,7 +125,9 @@ Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
|||||||
// "range": ["low", "middle", "high", "auto"]
|
// "range": ["low", "middle", "high", "auto"]
|
||||||
})),
|
})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'child_lock', type: functionTypesMap['Boolean'], values: ValueModel.fromJson({})),
|
code: 'child_lock',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
],
|
],
|
||||||
DeviceType.Gateway: [
|
DeviceType.Gateway: [
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
@ -136,7 +141,9 @@ Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
|||||||
"range": ["normal", "alarm"]
|
"range": ["normal", "alarm"]
|
||||||
})),
|
})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'factory_reset', type: functionTypesMap['Boolean'], values: ValueModel.fromJson({})),
|
code: 'factory_reset',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'alarm_active',
|
code: 'alarm_active',
|
||||||
type: functionTypesMap['String'],
|
type: functionTypesMap['String'],
|
||||||
@ -146,7 +153,8 @@ Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
|||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'sensitivity',
|
code: 'sensitivity',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "", "min": 1, "max": 10, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "", "min": 1, "max": 10, "scale": 0, "step": 1})),
|
||||||
],
|
],
|
||||||
DeviceType.DoorLock: [
|
DeviceType.DoorLock: [
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
@ -154,7 +162,9 @@ Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
|||||||
type: functionTypesMap['Raw'],
|
type: functionTypesMap['Raw'],
|
||||||
values: ValueModel.fromJson({})),
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'remote_no_dp_key', type: functionTypesMap['Raw'], values: ValueModel.fromJson({})),
|
code: 'remote_no_dp_key',
|
||||||
|
type: functionTypesMap['Raw'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'normal_open_switch',
|
code: 'normal_open_switch',
|
||||||
type: functionTypesMap['Boolean'],
|
type: functionTypesMap['Boolean'],
|
||||||
@ -164,64 +174,87 @@ Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
|||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'far_detection',
|
code: 'far_detection',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "cm", "min": 75, "max": 600, "scale": 0, "step": 75})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "cm", "min": 75, "max": 600, "scale": 0, "step": 75})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'presence_time',
|
code: 'presence_time',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values:
|
values: ValueModel.fromJson(
|
||||||
ValueModel.fromJson({"unit": "Min", "min": 0, "max": 65535, "scale": 0, "step": 1})),
|
{"unit": "Min", "min": 0, "max": 65535, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'motion_sensitivity_value',
|
code: 'motion_sensitivity_value',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "", "min": 1, "max": 5, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "", "min": 1, "max": 5, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'motionless_sensitivity',
|
code: 'motionless_sensitivity',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "", "min": 1, "max": 5, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "", "min": 1, "max": 5, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'indicator', type: functionTypesMap['Boolean'], values: ValueModel.fromJson({})),
|
code: 'indicator',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
],
|
],
|
||||||
DeviceType.OneGang: [
|
DeviceType.OneGang: [
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'switch_1', type: functionTypesMap['Boolean'], values: ValueModel.fromJson({})),
|
code: 'switch_1',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_1',
|
code: 'countdown_1',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
||||||
],
|
],
|
||||||
DeviceType.TwoGang: [
|
DeviceType.TwoGang: [
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'switch_1', type: functionTypesMap['Boolean'], values: ValueModel.fromJson({})),
|
code: 'switch_1',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'switch_2', type: functionTypesMap['Boolean'], values: ValueModel.fromJson({})),
|
code: 'switch_2',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_1',
|
code: 'countdown_1',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_2',
|
code: 'countdown_2',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
||||||
],
|
],
|
||||||
DeviceType.ThreeGang: [
|
DeviceType.ThreeGang: [
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'switch_1', type: functionTypesMap['Boolean'], values: ValueModel.fromJson({})),
|
code: 'switch_1',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'switch_2', type: functionTypesMap['Boolean'], values: ValueModel.fromJson({})),
|
code: 'switch_2',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'switch_3', type: functionTypesMap['Boolean'], values: ValueModel.fromJson({})),
|
code: 'switch_3',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_1',
|
code: 'countdown_1',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_2',
|
code: 'countdown_2',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_3',
|
code: 'countdown_3',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
||||||
],
|
],
|
||||||
DeviceType.Curtain: [
|
DeviceType.Curtain: [
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
@ -233,15 +266,19 @@ Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
|||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'percent_control',
|
code: 'percent_control',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "%", "min": 0, "max": 100, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "%", "min": 0, "max": 100, "scale": 0, "step": 1})),
|
||||||
],
|
],
|
||||||
DeviceType.WH: [
|
DeviceType.WH: [
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'switch_1', type: functionTypesMap['Boolean'], values: ValueModel.fromJson({})),
|
code: 'switch_1',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_1',
|
code: 'countdown_1',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'relay_status',
|
code: 'relay_status',
|
||||||
type: functionTypesMap['Enum'],
|
type: functionTypesMap['Enum'],
|
||||||
@ -265,7 +302,9 @@ Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
|||||||
],
|
],
|
||||||
DeviceType.DS: [
|
DeviceType.DS: [
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'doorcontact_state', type: functionTypesMap['Raw'], values: ValueModel.fromJson({})),
|
code: 'doorcontact_state',
|
||||||
|
type: functionTypesMap['Raw'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'battery_percentage',
|
code: 'battery_percentage',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
@ -273,11 +312,14 @@ Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
|||||||
],
|
],
|
||||||
DeviceType.OneTouch: [
|
DeviceType.OneTouch: [
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'switch_1', type: functionTypesMap['Boolean'], values: ValueModel.fromJson({})),
|
code: 'switch_1',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_1',
|
code: 'countdown_1',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'relay_status',
|
code: 'relay_status',
|
||||||
type: functionTypesMap['Enum'],
|
type: functionTypesMap['Enum'],
|
||||||
@ -299,17 +341,23 @@ Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
|||||||
],
|
],
|
||||||
DeviceType.TowTouch: [
|
DeviceType.TowTouch: [
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'switch_1', type: functionTypesMap['Boolean'], values: ValueModel.fromJson({})),
|
code: 'switch_1',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'switch_2', type: functionTypesMap['Boolean'], values: ValueModel.fromJson({})),
|
code: 'switch_2',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_1',
|
code: 'countdown_1',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_2',
|
code: 'countdown_2',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'relay_status',
|
code: 'relay_status',
|
||||||
type: functionTypesMap['Enum'],
|
type: functionTypesMap['Enum'],
|
||||||
@ -337,23 +385,32 @@ Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
|||||||
],
|
],
|
||||||
DeviceType.ThreeTouch: [
|
DeviceType.ThreeTouch: [
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'switch_1', type: functionTypesMap['Boolean'], values: ValueModel.fromJson({})),
|
code: 'switch_1',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'switch_2', type: functionTypesMap['Boolean'], values: ValueModel.fromJson({})),
|
code: 'switch_2',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'switch_3', type: functionTypesMap['Boolean'], values: ValueModel.fromJson({})),
|
code: 'switch_3',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_1',
|
code: 'countdown_1',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_2',
|
code: 'countdown_2',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_3',
|
code: 'countdown_3',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'relay_status',
|
code: 'relay_status',
|
||||||
type: functionTypesMap['Enum'],
|
type: functionTypesMap['Enum'],
|
||||||
@ -387,19 +444,24 @@ Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
|||||||
],
|
],
|
||||||
DeviceType.GarageDoor: [
|
DeviceType.GarageDoor: [
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'switch_1', type: functionTypesMap['Boolean'], values: ValueModel.fromJson({})),
|
code: 'switch_1',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_1',
|
code: 'countdown_1',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "s", "min": 0, "max": 86400, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 86400, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'tr_timecon',
|
code: 'tr_timecon',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "s", "min": 0, "max": 120, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 120, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_alarm',
|
code: 'countdown_alarm',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "s", "min": 0, "max": 86400, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 86400, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'door_control_1',
|
code: 'door_control_1',
|
||||||
type: functionTypesMap['Enum'],
|
type: functionTypesMap['Enum'],
|
||||||
@ -420,19 +482,24 @@ Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
|||||||
DeviceType.WaterLeak: [],
|
DeviceType.WaterLeak: [],
|
||||||
DeviceType.PC: [
|
DeviceType.PC: [
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'switch_1', type: functionTypesMap['Boolean'], values: ValueModel.fromJson({})),
|
code: 'switch_1',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_1',
|
code: 'countdown_1',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "s", "min": 0, "max": 86400, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 86400, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'tr_timecon',
|
code: 'tr_timecon',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "s", "min": 0, "max": 120, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 120, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_alarm',
|
code: 'countdown_alarm',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
values: ValueModel.fromJson({"unit": "s", "min": 0, "max": 86400, "scale": 0, "step": 1})),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 86400, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'door_control_1',
|
code: 'door_control_1',
|
||||||
type: functionTypesMap['Enum'],
|
type: functionTypesMap['Enum'],
|
||||||
@ -476,9 +543,13 @@ Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
|||||||
"range": ["scene"]
|
"range": ["scene"]
|
||||||
})),
|
})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'scene_id_group_id', type: functionTypesMap['Raw'], values: ValueModel.fromJson({})),
|
code: 'scene_id_group_id',
|
||||||
|
type: functionTypesMap['Raw'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'switch_backlight', type: functionTypesMap['Enum'], values: ValueModel.fromJson({})),
|
code: 'switch_backlight',
|
||||||
|
type: functionTypesMap['Enum'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
],
|
],
|
||||||
DeviceType.SixScene: [
|
DeviceType.SixScene: [
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
@ -518,13 +589,19 @@ Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
|||||||
"range": ["scene"]
|
"range": ["scene"]
|
||||||
})),
|
})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'scene_id_group_id', type: functionTypesMap['Raw'], values: ValueModel.fromJson({})),
|
code: 'scene_id_group_id',
|
||||||
|
type: functionTypesMap['Raw'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'switch_backlight', type: functionTypesMap['Enum'], values: ValueModel.fromJson({})),
|
code: 'switch_backlight',
|
||||||
|
type: functionTypesMap['Enum'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
],
|
],
|
||||||
DeviceType.SOS: [
|
DeviceType.SOS: [
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'contact_state', type: functionTypesMap['Raw'], values: ValueModel.fromJson({})),
|
code: 'contact_state',
|
||||||
|
type: functionTypesMap['Raw'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'battery_percentage',
|
code: 'battery_percentage',
|
||||||
type: functionTypesMap['Integer'],
|
type: functionTypesMap['Integer'],
|
||||||
@ -709,16 +786,20 @@ List<Map<String, Object>> menuSections = [
|
|||||||
'title': 'Legal Information',
|
'title': 'Legal Information',
|
||||||
'color': const Color(0xFF001B72),
|
'color': const Color(0xFF001B72),
|
||||||
'buttons': [
|
'buttons': [
|
||||||
{'title': 'About', 'Icon': Assets.assetsIconsMenuIconsLeagalInfoIconsAbout, 'page': null},
|
{
|
||||||
// {
|
'title': 'About',
|
||||||
// 'title': 'Privacy Policy',
|
'Icon': Assets.assetsIconsMenuIconsLeagalInfoIconsAbout,
|
||||||
// 'Icon': Assets.assetsIconsMenuIconsLeagalInfoIconsPrivacyPolicy,
|
'page': null
|
||||||
// 'page': null
|
},
|
||||||
// },
|
{
|
||||||
|
'title': 'Privacy Policy',
|
||||||
|
'Icon': Assets.assetsIconsMenuIconsLeagalInfoIconsPrivacyPolicy,
|
||||||
|
'page': const PrivacyPolicy()
|
||||||
|
},
|
||||||
{
|
{
|
||||||
'title': 'User Agreement',
|
'title': 'User Agreement',
|
||||||
'Icon': Assets.assetsIconsMenuIconsLeagalInfoIconsUserAgreement,
|
'Icon': Assets.assetsIconsMenuIconsLeagalInfoIconsUserAgreement,
|
||||||
'page': null
|
'page': const UserAgreement()
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|||||||
262
pubspec.lock
262
pubspec.lock
@ -25,6 +25,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.11.0"
|
version: "2.11.0"
|
||||||
|
audio_session:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: audio_session
|
||||||
|
sha256: b2a26ba8b7efa1790d6460e82971fde3e398cfbe2295df9dea22f3499d2c12a7
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.1.23"
|
||||||
bloc:
|
bloc:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -73,6 +81,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.3.0"
|
||||||
|
chewie:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: chewie
|
||||||
|
sha256: "8bc4ac4cf3f316e50a25958c0f5eb9bb12cf7e8308bb1d74a43b230da2cfc144"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.7.5"
|
||||||
clock:
|
clock:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -85,10 +101,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: collection
|
name: collection
|
||||||
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
|
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.19.0"
|
version: "1.18.0"
|
||||||
cross_file:
|
cross_file:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -129,6 +145,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.0"
|
version: "2.2.0"
|
||||||
|
dbus:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: dbus
|
||||||
|
sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.7.10"
|
||||||
device_info_plus:
|
device_info_plus:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -440,6 +464,70 @@ packages:
|
|||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
|
flutter_widget_from_html:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: flutter_widget_from_html
|
||||||
|
sha256: f3967a5b42896662efdd420b5adaf8a7d3692b0f44462a07c80e3b4c173b1a02
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.15.3"
|
||||||
|
flutter_widget_from_html_core:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: flutter_widget_from_html_core
|
||||||
|
sha256: b1048fd119a14762e2361bd057da608148a895477846d6149109b2151d2f7abf
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.15.2"
|
||||||
|
fwfh_cached_network_image:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: fwfh_cached_network_image
|
||||||
|
sha256: "8e44226801bfba27930673953afce8af44da7e92573be93f60385d9865a089dd"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.14.3"
|
||||||
|
fwfh_chewie:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: fwfh_chewie
|
||||||
|
sha256: "37bde9cedfb6dc5546176f7f0c56af1e814966cb33ec58f16c9565ed93ccb704"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.14.8"
|
||||||
|
fwfh_just_audio:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: fwfh_just_audio
|
||||||
|
sha256: "38dc2c55803bd3cef33042c473e0c40b891ad4548078424641a32032f6a1245f"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.15.2"
|
||||||
|
fwfh_svg:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: fwfh_svg
|
||||||
|
sha256: "550b1014d12b5528d8bdb6e3b44b58721f3fb1f65d7a852d1623a817008bdfc4"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.8.3"
|
||||||
|
fwfh_url_launcher:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: fwfh_url_launcher
|
||||||
|
sha256: b9f5d55a5ae2c2c07243ba33f7ba49ac9544bdb2f4c16d8139df9ccbebe3449c
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.9.1"
|
||||||
|
fwfh_webview:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: fwfh_webview
|
||||||
|
sha256: c0a8b664b642f40f4c252a0ab4e72c22dcd97c7fb3a7e50a6b4bdb6f63afca19
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.15.3"
|
||||||
get_it:
|
get_it:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -552,22 +640,46 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.7"
|
version: "0.6.7"
|
||||||
|
just_audio:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: just_audio
|
||||||
|
sha256: "1a1eb86e7d81e69a1d36943f2b3efd62dece3dad2cafd9ec2e62e6db7c04d9b7"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.9.43"
|
||||||
|
just_audio_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: just_audio_platform_interface
|
||||||
|
sha256: "0243828cce503c8366cc2090cefb2b3c871aa8ed2f520670d76fd47aa1ab2790"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.3.0"
|
||||||
|
just_audio_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: just_audio_web
|
||||||
|
sha256: "9a98035b8b24b40749507687520ec5ab404e291d2b0937823ff45d92cb18d448"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.4.13"
|
||||||
leak_tracker:
|
leak_tracker:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker
|
name: leak_tracker
|
||||||
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
|
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.0.7"
|
version: "10.0.4"
|
||||||
leak_tracker_flutter_testing:
|
leak_tracker_flutter_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker_flutter_testing
|
name: leak_tracker_flutter_testing
|
||||||
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
|
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.8"
|
version: "3.0.3"
|
||||||
leak_tracker_testing:
|
leak_tracker_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -584,6 +696,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.0"
|
version: "3.0.0"
|
||||||
|
logging:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: logging
|
||||||
|
sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.3.0"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -596,18 +716,18 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: material_color_utilities
|
name: material_color_utilities
|
||||||
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
|
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.11.1"
|
version: "0.8.0"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
|
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.15.0"
|
version: "1.12.0"
|
||||||
mime:
|
mime:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -640,6 +760,22 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.2.0"
|
version: "5.2.0"
|
||||||
|
package_info_plus:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: package_info_plus
|
||||||
|
sha256: cb44f49b6e690fa766f023d5b22cac6b9affe741dd792b6ac7ad4fabe0d7b097
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.0.0"
|
||||||
|
package_info_plus_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: package_info_plus_platform_interface
|
||||||
|
sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.1"
|
||||||
path:
|
path:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -884,7 +1020,7 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.99"
|
||||||
sleek_circular_slider:
|
sleek_circular_slider:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -937,10 +1073,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: stack_trace
|
name: stack_trace
|
||||||
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
|
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.12.0"
|
version: "1.11.1"
|
||||||
stream_channel:
|
stream_channel:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -953,10 +1089,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: string_scanner
|
name: string_scanner
|
||||||
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
|
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.2.0"
|
||||||
synchronized:
|
synchronized:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -977,10 +1113,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
|
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.3"
|
version: "0.7.0"
|
||||||
time_picker_spinner:
|
time_picker_spinner:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -1101,14 +1237,70 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.4"
|
||||||
|
video_player:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: video_player
|
||||||
|
sha256: "4a8c3492d734f7c39c2588a3206707a05ee80cef52e8c7f3b2078d430c84bc17"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.9.2"
|
||||||
|
video_player_android:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: video_player_android
|
||||||
|
sha256: e343701aa890b74a863fa460f5c0e628127ed06a975d7d9af6b697133fb25bdf
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.7.1"
|
||||||
|
video_player_avfoundation:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: video_player_avfoundation
|
||||||
|
sha256: "8a4e73a3faf2b13512978a43cf1cdda66feeeb900a0527f1fbfd7b19cf3458d3"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.6.7"
|
||||||
|
video_player_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: video_player_platform_interface
|
||||||
|
sha256: "229d7642ccd9f3dc4aba169609dd6b5f3f443bb4cc15b82f7785fcada5af9bbb"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.2.3"
|
||||||
|
video_player_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: video_player_web
|
||||||
|
sha256: "881b375a934d8ebf868c7fb1423b2bfaa393a0a265fa3f733079a86536064a10"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.3"
|
||||||
vm_service:
|
vm_service:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vm_service
|
name: vm_service
|
||||||
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
|
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "14.3.0"
|
version: "14.2.1"
|
||||||
|
wakelock_plus:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: wakelock_plus
|
||||||
|
sha256: "104d94837bb28c735894dcd592877e990149c380e6358b00c04398ca1426eed4"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.2.1"
|
||||||
|
wakelock_plus_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: wakelock_plus_platform_interface
|
||||||
|
sha256: "70e780bc99796e1db82fe764b1e7dcb89a86f1e5b3afb1db354de50f2e41eb7a"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.2.2"
|
||||||
web:
|
web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1117,6 +1309,38 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.5.1"
|
version: "0.5.1"
|
||||||
|
webview_flutter:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: webview_flutter
|
||||||
|
sha256: "6869c8786d179f929144b4a1f86e09ac0eddfe475984951ea6c634774c16b522"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.8.0"
|
||||||
|
webview_flutter_android:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: webview_flutter_android
|
||||||
|
sha256: ed021f27ae621bc97a6019fb601ab16331a3db4bf8afa305e9f6689bdb3edced
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.16.8"
|
||||||
|
webview_flutter_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: webview_flutter_platform_interface
|
||||||
|
sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.10.0"
|
||||||
|
webview_flutter_wkwebview:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: webview_flutter_wkwebview
|
||||||
|
sha256: "9c62cc46fa4f2d41e10ab81014c1de470a6c6f26051a2de32111b2ee55287feb"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.14.0"
|
||||||
win32:
|
win32:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@ -47,6 +47,8 @@ dependencies:
|
|||||||
fl_chart: ^0.69.0
|
fl_chart: ^0.69.0
|
||||||
firebase_database: ^10.5.7
|
firebase_database: ^10.5.7
|
||||||
percent_indicator: ^4.2.3
|
percent_indicator: ^4.2.3
|
||||||
|
flutter_widget_from_html: ^0.15.3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
|
|||||||
Reference in New Issue
Block a user