Updating to latest FlutterFlow output.
This commit is contained in:
parent
5241206a6a
commit
0790a7c99f
|
@ -28,7 +28,6 @@ require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelpe
|
|||
flutter_ios_podfile_setup
|
||||
|
||||
target 'Runner' do
|
||||
pod 'GoogleUtilities'
|
||||
use_frameworks! :linkage => :static
|
||||
use_modular_headers!
|
||||
|
||||
|
@ -44,9 +43,3 @@ post_install do |installer|
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
target 'ImageNotification' do
|
||||
use_frameworks! :linkage => :static
|
||||
pod 'Firebase/Messaging'
|
||||
pod 'GoogleUtilities'
|
||||
end
|
||||
|
|
|
@ -44,8 +44,8 @@
|
|||
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
6436409C27A31CD800820AF7 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
6436409327A31CD800820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
6436409C27A31CDC00820AF7 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
6436409A27A31CDA00820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
|
@ -225,8 +225,8 @@
|
|||
6436409C27A31CD800820AF7 /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
6436409C27A31CD800820AF7 /* pt */,
|
||||
6436409327A31CD800820AF7 /* en */,
|
||||
6436409C27A31CDC00820AF7 /* pt */,
|
||||
6436409A27A31CDA00820AF7 /* en */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
|
|
|
@ -52,11 +52,6 @@
|
|||
<key>NSPhotoLibraryUsageDescription</key>
|
||||
<string>In order to upload data, this app requires permission to access the photo library.</string>
|
||||
|
||||
<key>UIBackgroundModes</key>
|
||||
<array>
|
||||
<string>fetch</string>
|
||||
<string>remote-notification</string>
|
||||
</array>
|
||||
|
||||
|
||||
<key>UILaunchStoryboardName</key>
|
||||
|
|
|
@ -2,7 +2,5 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>aps-environment</key>
|
||||
<string>development</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import '/application_components/molecular_components/throw_exception/throw_exception_widget.dart';
|
||||
import '/backend/api_requests/api_calls.dart';
|
||||
import '/components/molecular_components/throw_exception/throw_exception_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_theme.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
||||
import '/custom_code/actions/index.dart' as actions;
|
||||
|
@ -115,6 +115,9 @@ Future singInActionApp(
|
|||
FFAppState().userUUID = PhpGroup.loginCall.userUUID(
|
||||
(loginCall.jsonBody ?? ''),
|
||||
)!;
|
||||
FFAppState().token = PhpGroup.loginCall.userDeviceId(
|
||||
(loginCall.jsonBody ?? ''),
|
||||
)!;
|
||||
if (PhpGroup.loginCall.error(
|
||||
(loginCall.jsonBody ?? ''),
|
||||
) ==
|
||||
|
|
|
@ -43,6 +43,9 @@ class FFAppState extends ChangeNotifier {
|
|||
_safeInit(() {
|
||||
_local = prefs.getString('ff_local') ?? _local;
|
||||
});
|
||||
_safeInit(() {
|
||||
_token = prefs.getString('ff_token') ?? _token;
|
||||
});
|
||||
}
|
||||
|
||||
void update(VoidCallback callback) {
|
||||
|
@ -114,6 +117,13 @@ class FFAppState extends ChangeNotifier {
|
|||
_local = value;
|
||||
prefs.setString('ff_local', value);
|
||||
}
|
||||
|
||||
String _token = '';
|
||||
String get token => _token;
|
||||
set token(String value) {
|
||||
_token = value;
|
||||
prefs.setString('ff_token', value);
|
||||
}
|
||||
}
|
||||
|
||||
void _safeInit(Function() initializeField) {
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
import 'package:cloud_functions/cloud_functions.dart';
|
||||
|
||||
Future<Map<String, dynamic>> makeCloudCall(
|
||||
String callName,
|
||||
Map<String, dynamic> input,
|
||||
) async {
|
||||
try {
|
||||
final response = await FirebaseFunctions.instance
|
||||
.httpsCallable(callName, options: HttpsCallableOptions())
|
||||
.call(input);
|
||||
return response.data is Map
|
||||
? Map<String, dynamic>.from(response.data as Map)
|
||||
: {};
|
||||
} on FirebaseFunctionsException catch (e) {
|
||||
print(
|
||||
'Cloud call error!\n'
|
||||
'Code: ${e.code}\n'
|
||||
'Details: ${e.details}\n'
|
||||
'Message: ${e.message}',
|
||||
);
|
||||
return {};
|
||||
}
|
||||
}
|
|
@ -1,148 +0,0 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'serialization_util.dart';
|
||||
import '../backend.dart';
|
||||
import '../../flutter_flow/flutter_flow_theme.dart';
|
||||
import '../../flutter_flow/flutter_flow_util.dart';
|
||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
|
||||
final _handledMessageIds = <String?>{};
|
||||
|
||||
class PushNotificationsHandler extends StatefulWidget {
|
||||
const PushNotificationsHandler({super.key, required this.child});
|
||||
|
||||
final Widget child;
|
||||
|
||||
@override
|
||||
_PushNotificationsHandlerState createState() =>
|
||||
_PushNotificationsHandlerState();
|
||||
}
|
||||
|
||||
class _PushNotificationsHandlerState extends State<PushNotificationsHandler> {
|
||||
bool _loading = false;
|
||||
|
||||
Future handleOpenedPushNotification() async {
|
||||
if (isWeb) {
|
||||
return;
|
||||
}
|
||||
|
||||
final notification = await FirebaseMessaging.instance.getInitialMessage();
|
||||
if (notification != null) {
|
||||
await _handlePushNotification(notification);
|
||||
}
|
||||
FirebaseMessaging.onMessageOpenedApp.listen(_handlePushNotification);
|
||||
}
|
||||
|
||||
Future _handlePushNotification(RemoteMessage message) async {
|
||||
if (_handledMessageIds.contains(message.messageId)) {
|
||||
return;
|
||||
}
|
||||
_handledMessageIds.add(message.messageId);
|
||||
|
||||
if (mounted) {
|
||||
setState(() => _loading = true);
|
||||
}
|
||||
try {
|
||||
final initialPageName = message.data['initialPageName'] as String;
|
||||
final initialParameterData = getInitialParameterData(message.data);
|
||||
final parametersBuilder = parametersBuilderMap[initialPageName];
|
||||
if (parametersBuilder != null) {
|
||||
final parameterData = await parametersBuilder(initialParameterData);
|
||||
context.pushNamed(
|
||||
initialPageName,
|
||||
pathParameters: parameterData.pathParameters,
|
||||
extra: parameterData.extra,
|
||||
);
|
||||
}
|
||||
} catch (e) {
|
||||
print('Error: $e');
|
||||
} finally {
|
||||
if (mounted) {
|
||||
setState(() => _loading = false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
handleOpenedPushNotification();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) => _loading
|
||||
? Container(
|
||||
color: FlutterFlowTheme.of(context).primary,
|
||||
child: Image.asset(
|
||||
'assets/images/logo.svg',
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
)
|
||||
: widget.child;
|
||||
}
|
||||
|
||||
class ParameterData {
|
||||
const ParameterData(
|
||||
{this.requiredParams = const {}, this.allParams = const {}});
|
||||
final Map<String, String?> requiredParams;
|
||||
final Map<String, dynamic> allParams;
|
||||
|
||||
Map<String, String> get pathParameters => Map.fromEntries(
|
||||
requiredParams.entries
|
||||
.where((e) => e.value != null)
|
||||
.map((e) => MapEntry(e.key, e.value!)),
|
||||
);
|
||||
Map<String, dynamic> get extra => Map.fromEntries(
|
||||
allParams.entries.where((e) => e.value != null),
|
||||
);
|
||||
|
||||
static Future<ParameterData> Function(Map<String, dynamic>) none() =>
|
||||
(data) async => const ParameterData();
|
||||
}
|
||||
|
||||
final parametersBuilderMap =
|
||||
<String, Future<ParameterData> Function(Map<String, dynamic>)>{
|
||||
'LoginPage': (data) async => ParameterData(
|
||||
allParams: {
|
||||
'device': getParameter<String>(data, 'device'),
|
||||
},
|
||||
),
|
||||
'ForgotPasswordPage': ParameterData.none(),
|
||||
'homePage': ParameterData.none(),
|
||||
'RegisterPage': ParameterData.none(),
|
||||
'WelcomePage': ParameterData.none(),
|
||||
'registerVisitorPage': ParameterData.none(),
|
||||
'scheduleCompleteVisitPage': (data) async => ParameterData(
|
||||
allParams: {
|
||||
'visitorStrList': getParameter<String>(data, 'visitorStrList'),
|
||||
'visitStartDateStr': getParameter<String>(data, 'visitStartDateStr'),
|
||||
'visitEndDateStr': getParameter<String>(data, 'visitEndDateStr'),
|
||||
'visitReasonStr': getParameter<String>(data, 'visitReasonStr'),
|
||||
'visitLevelStr': getParameter<String>(data, 'visitLevelStr'),
|
||||
'visitTempBol': getParameter<bool>(data, 'visitTempBol'),
|
||||
'visitObsStr': getParameter<String>(data, 'visitObsStr'),
|
||||
},
|
||||
),
|
||||
'scheduleProvisionalVisitPage': ParameterData.none(),
|
||||
'onBoardingPage': ParameterData.none(),
|
||||
'fastPassPage': ParameterData.none(),
|
||||
'test': ParameterData.none(),
|
||||
'peopleOnThePropertyPage': ParameterData.none(),
|
||||
};
|
||||
|
||||
Map<String, dynamic> getInitialParameterData(Map<String, dynamic> data) {
|
||||
try {
|
||||
final parameterDataStr = data['parameterData'];
|
||||
if (parameterDataStr == null ||
|
||||
parameterDataStr is! String ||
|
||||
parameterDataStr.isEmpty) {
|
||||
return {};
|
||||
}
|
||||
return jsonDecode(parameterDataStr) as Map<String, dynamic>;
|
||||
} catch (e) {
|
||||
print('Error parsing parameter data: $e');
|
||||
return {};
|
||||
}
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
import 'dart:io' show Platform;
|
||||
|
||||
import 'package:cloud_firestore/cloud_firestore.dart';
|
||||
|
||||
import '../../auth/firebase_auth/auth_util.dart';
|
||||
import '../cloud_functions/cloud_functions.dart';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:stream_transform/stream_transform.dart';
|
||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||
|
||||
export 'push_notifications_handler.dart';
|
||||
export 'serialization_util.dart';
|
||||
|
||||
class UserTokenInfo {
|
||||
const UserTokenInfo(this.userPath, this.fcmToken);
|
||||
final String userPath;
|
||||
final String fcmToken;
|
||||
}
|
||||
|
||||
Stream<UserTokenInfo> getFcmTokenStream(String userPath) =>
|
||||
Stream.value(!kIsWeb && (Platform.isIOS || Platform.isAndroid))
|
||||
.where((shouldGetToken) => shouldGetToken)
|
||||
.asyncMap<String?>(
|
||||
(_) => FirebaseMessaging.instance.requestPermission().then(
|
||||
(settings) => settings.authorizationStatus ==
|
||||
AuthorizationStatus.authorized
|
||||
? FirebaseMessaging.instance.getToken()
|
||||
: null,
|
||||
))
|
||||
.switchMap((fcmToken) => Stream.value(fcmToken)
|
||||
.merge(FirebaseMessaging.instance.onTokenRefresh))
|
||||
.where((fcmToken) => fcmToken != null && fcmToken.isNotEmpty)
|
||||
.map((token) => UserTokenInfo(userPath, token!));
|
||||
final fcmTokenUserStream = authenticatedUserStream
|
||||
.where((user) => user != null)
|
||||
.map((user) => user!.reference.path)
|
||||
.distinct()
|
||||
.switchMap(getFcmTokenStream)
|
||||
.map(
|
||||
(userTokenInfo) => makeCloudCall(
|
||||
'addFcmToken',
|
||||
{
|
||||
'userDocPath': userTokenInfo.userPath,
|
||||
'fcmToken': userTokenInfo.fcmToken,
|
||||
'deviceType': Platform.isIOS ? 'iOS' : 'Android',
|
||||
},
|
||||
),
|
||||
);
|
|
@ -1,172 +0,0 @@
|
|||
import 'dart:convert';
|
||||
|
||||
import 'package:cloud_firestore/cloud_firestore.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '/backend/backend.dart';
|
||||
import '/backend/schema/structs/index.dart';
|
||||
|
||||
import '../../flutter_flow/lat_lng.dart';
|
||||
import '../../flutter_flow/place.dart';
|
||||
import '../../flutter_flow/uploaded_file.dart';
|
||||
|
||||
/// SERIALIZATION HELPERS
|
||||
|
||||
String dateTimeRangeToString(DateTimeRange dateTimeRange) {
|
||||
final startStr = dateTimeRange.start.millisecondsSinceEpoch.toString();
|
||||
final endStr = dateTimeRange.end.millisecondsSinceEpoch.toString();
|
||||
return '$startStr|$endStr';
|
||||
}
|
||||
|
||||
String placeToString(FFPlace place) => jsonEncode({
|
||||
'latLng': place.latLng.serialize(),
|
||||
'name': place.name,
|
||||
'address': place.address,
|
||||
'city': place.city,
|
||||
'state': place.state,
|
||||
'country': place.country,
|
||||
'zipCode': place.zipCode,
|
||||
});
|
||||
|
||||
String uploadedFileToString(FFUploadedFile uploadedFile) =>
|
||||
uploadedFile.serialize();
|
||||
|
||||
/// Converts the input value into a value that can be JSON encoded.
|
||||
dynamic serializeParameter(dynamic value) {
|
||||
switch (value.runtimeType) {
|
||||
case DateTime:
|
||||
return (value as DateTime).millisecondsSinceEpoch;
|
||||
case DateTimeRange:
|
||||
return dateTimeRangeToString(value as DateTimeRange);
|
||||
case LatLng:
|
||||
return (value as LatLng).serialize();
|
||||
case Color:
|
||||
return (value as Color).toCssString();
|
||||
case FFPlace:
|
||||
return placeToString(value as FFPlace);
|
||||
case FFUploadedFile:
|
||||
return uploadedFileToString(value as FFUploadedFile);
|
||||
}
|
||||
|
||||
if (value is DocumentReference) {
|
||||
return value.path;
|
||||
}
|
||||
|
||||
if (value is FirestoreRecord) {
|
||||
return (value as dynamic).reference.path;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
String serializeParameterData(Map<String, dynamic> parameterData) => jsonEncode(
|
||||
parameterData.map(
|
||||
(key, value) => MapEntry(
|
||||
key,
|
||||
serializeParameter(value),
|
||||
),
|
||||
)..removeWhere((k, v) => v == null),
|
||||
);
|
||||
|
||||
/// END SERIALIZATION HELPERS
|
||||
|
||||
/// DESERIALIZATION HELPERS
|
||||
|
||||
DateTimeRange? dateTimeRangeFromString(String dateTimeRangeStr) {
|
||||
final pieces = dateTimeRangeStr.split('|');
|
||||
if (pieces.length != 2) {
|
||||
return null;
|
||||
}
|
||||
return DateTimeRange(
|
||||
start: DateTime.fromMillisecondsSinceEpoch(int.parse(pieces.first)),
|
||||
end: DateTime.fromMillisecondsSinceEpoch(int.parse(pieces.last)),
|
||||
);
|
||||
}
|
||||
|
||||
LatLng? latLngFromString(String? latLngStr) {
|
||||
final pieces = latLngStr?.split(',');
|
||||
if (pieces == null || pieces.length != 2) {
|
||||
return null;
|
||||
}
|
||||
return LatLng(
|
||||
double.parse(pieces.first.trim()),
|
||||
double.parse(pieces.last.trim()),
|
||||
);
|
||||
}
|
||||
|
||||
FFPlace placeFromString(String placeStr) {
|
||||
final serializedData = jsonDecode(placeStr) as Map<String, dynamic>;
|
||||
final data = {
|
||||
'latLng': serializedData.containsKey('latLng')
|
||||
? latLngFromString(serializedData['latLng'] as String)
|
||||
: const LatLng(0.0, 0.0),
|
||||
'name': serializedData['name'] ?? '',
|
||||
'address': serializedData['address'] ?? '',
|
||||
'city': serializedData['city'] ?? '',
|
||||
'state': serializedData['state'] ?? '',
|
||||
'country': serializedData['country'] ?? '',
|
||||
'zipCode': serializedData['zipCode'] ?? '',
|
||||
};
|
||||
return FFPlace(
|
||||
latLng: data['latLng'] as LatLng,
|
||||
name: data['name'] as String,
|
||||
address: data['address'] as String,
|
||||
city: data['city'] as String,
|
||||
state: data['state'] as String,
|
||||
country: data['country'] as String,
|
||||
zipCode: data['zipCode'] as String,
|
||||
);
|
||||
}
|
||||
|
||||
FFUploadedFile uploadedFileFromString(String uploadedFileStr) =>
|
||||
FFUploadedFile.deserialize(uploadedFileStr);
|
||||
|
||||
T? getParameter<T>(Map<String, dynamic> data, String paramName) {
|
||||
try {
|
||||
if (!data.containsKey(paramName)) {
|
||||
return null;
|
||||
}
|
||||
final param = data[paramName];
|
||||
switch (T) {
|
||||
case String:
|
||||
return param;
|
||||
case double:
|
||||
return param.toDouble();
|
||||
case DateTime:
|
||||
return DateTime.fromMillisecondsSinceEpoch(param) as T;
|
||||
case DateTimeRange:
|
||||
return dateTimeRangeFromString(param) as T;
|
||||
case LatLng:
|
||||
return latLngFromString(param) as T;
|
||||
case Color:
|
||||
return fromCssColor(param) as T;
|
||||
case FFPlace:
|
||||
return placeFromString(param) as T;
|
||||
case FFUploadedFile:
|
||||
return uploadedFileFromString(param) as T;
|
||||
}
|
||||
if (param is String) {
|
||||
return FirebaseFirestore.instance.doc(param) as T;
|
||||
}
|
||||
return param;
|
||||
} catch (e) {
|
||||
print('Error parsing parameter "$paramName": $e');
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Future<T?> getDocumentParameter<T>(
|
||||
Map<String, dynamic> data,
|
||||
String paramName,
|
||||
RecordBuilder<T> recordBuilder,
|
||||
) {
|
||||
if (!data.containsKey(paramName)) {
|
||||
return Future.value(null);
|
||||
}
|
||||
return FirebaseFirestore.instance
|
||||
.doc(data[paramName])
|
||||
.get()
|
||||
.then((s) => recordBuilder(s));
|
||||
}
|
||||
|
||||
/// END DESERIALIZATION HELPERS
|
|
@ -1,4 +1,4 @@
|
|||
import '/application_components/templates_components/regisiter_vistor_template_component/regisiter_vistor_template_component_widget.dart';
|
||||
import '/components/templates_components/regisiter_vistor_template_component/regisiter_vistor_template_component_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_icon_button.dart';
|
||||
import '/flutter_flow/flutter_flow_theme.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
|
@ -1,4 +1,4 @@
|
|||
import '/application_components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart';
|
||||
import '/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_theme.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
||||
import '/flutter_flow/custom_functions.dart' as functions;
|
|
@ -1,6 +1,6 @@
|
|||
import '/application_components/molecular_components/option_selection_modal/option_selection_modal_widget.dart';
|
||||
import '/application_components/organism_components/menu_list_view_component/menu_list_view_component_widget.dart';
|
||||
import '/application_components/organism_components/menu_staggered_view_component/menu_staggered_view_component_widget.dart';
|
||||
import '/components/molecular_components/option_selection_modal/option_selection_modal_widget.dart';
|
||||
import '/components/organism_components/menu_list_view_component/menu_list_view_component_widget.dart';
|
||||
import '/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
||||
import 'menu_component_widget.dart' show MenuComponentWidget;
|
||||
import 'package:flutter/material.dart';
|
|
@ -1,5 +1,5 @@
|
|||
import '/application_components/organism_components/menu_list_view_component/menu_list_view_component_widget.dart';
|
||||
import '/application_components/organism_components/menu_staggered_view_component/menu_staggered_view_component_widget.dart';
|
||||
import '/components/organism_components/menu_list_view_component/menu_list_view_component_widget.dart';
|
||||
import '/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'menu_component_model.dart';
|
|
@ -1,6 +1,6 @@
|
|||
import '/application_components/molecular_components/throw_exception/throw_exception_widget.dart';
|
||||
import '/application_components/visitor_details_modal_template_component/visitor_details_modal_template_component_widget.dart';
|
||||
import '/backend/api_requests/api_calls.dart';
|
||||
import '/components/molecular_components/throw_exception/throw_exception_widget.dart';
|
||||
import '/components/templates_components/visitor_details_modal_template_component/visitor_details_modal_template_component_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_icon_button.dart';
|
||||
import '/flutter_flow/flutter_flow_theme.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
|
@ -1,6 +1,6 @@
|
|||
import '/application_components/molecular_components/throw_exception/throw_exception_widget.dart';
|
||||
import '/application_components/visitor_details_modal_template_component/visitor_details_modal_template_component_widget.dart';
|
||||
import '/backend/api_requests/api_calls.dart';
|
||||
import '/components/molecular_components/throw_exception/throw_exception_widget.dart';
|
||||
import '/components/templates_components/visitor_details_modal_template_component/visitor_details_modal_template_component_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_icon_button.dart';
|
||||
import '/flutter_flow/flutter_flow_theme.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
|
@ -1,5 +1,5 @@
|
|||
import '/application_components/molecular_components/throw_exception/throw_exception_widget.dart';
|
||||
import '/backend/api_requests/api_calls.dart';
|
||||
import '/components/molecular_components/throw_exception/throw_exception_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_drop_down.dart';
|
||||
import '/flutter_flow/flutter_flow_theme.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
|
@ -1,4 +1,4 @@
|
|||
import '/application_components/templates_components/forgot_password_template_component/forgot_password_template_component_widget.dart';
|
||||
import '/components/templates_components/forgot_password_template_component/forgot_password_template_component_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_animations.dart';
|
||||
import '/flutter_flow/flutter_flow_theme.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
|
@ -1,5 +1,5 @@
|
|||
import '/application_components/organism_components/schedule_visit_detail/schedule_visit_detail_widget.dart';
|
||||
import '/application_components/organism_components/view_visit_detail/view_visit_detail_widget.dart';
|
||||
import '/components/organism_components/schedule_visit_detail/schedule_visit_detail_widget.dart';
|
||||
import '/components/organism_components/view_visit_detail/view_visit_detail_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
||||
import 'visit_details_modal_template_component_widget.dart'
|
||||
show VisitDetailsModalTemplateComponentWidget;
|
|
@ -1,5 +1,5 @@
|
|||
import '/application_components/organism_components/schedule_visit_detail/schedule_visit_detail_widget.dart';
|
||||
import '/application_components/organism_components/view_visit_detail/view_visit_detail_widget.dart';
|
||||
import '/components/organism_components/schedule_visit_detail/schedule_visit_detail_widget.dart';
|
||||
import '/components/organism_components/view_visit_detail/view_visit_detail_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'visit_details_modal_template_component_model.dart';
|
|
@ -1,6 +1,6 @@
|
|||
import '/application_components/molecular_components/visitor_not_found_component/visitor_not_found_component_widget.dart';
|
||||
import '/application_components/visitor_details_modal_template_component/visitor_details_modal_template_component_widget.dart';
|
||||
import '/backend/api_requests/api_calls.dart';
|
||||
import '/components/molecular_components/visitor_not_found_component/visitor_not_found_component_widget.dart';
|
||||
import '/components/templates_components/visitor_details_modal_template_component/visitor_details_modal_template_component_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_icon_button.dart';
|
||||
import '/flutter_flow/flutter_flow_theme.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
|
@ -3,21 +3,21 @@ export '/legacy/on_boarding_legacy/login_page/login_page_widget.dart'
|
|||
show LoginPageWidget;
|
||||
export '/legacy/on_boarding_legacy/forgot_password_page/forgot_password_page_widget.dart'
|
||||
show ForgotPasswordPageWidget;
|
||||
export '/application_pages/home_page/home_page_widget.dart' show HomePageWidget;
|
||||
export '/pages/home_page/home_page_widget.dart' show HomePageWidget;
|
||||
export '/legacy/on_boarding_legacy/register_page/register_page_widget.dart'
|
||||
show RegisterPageWidget;
|
||||
export '/legacy/on_boarding_legacy/welcome_page/welcome_page_widget.dart'
|
||||
show WelcomePageWidget;
|
||||
export '/application_pages/register_visitor_page/register_visitor_page_widget.dart'
|
||||
export '/pages/register_visitor_page/register_visitor_page_widget.dart'
|
||||
show RegisterVisitorPageWidget;
|
||||
export '/application_pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart'
|
||||
export '/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart'
|
||||
show ScheduleCompleteVisitPageWidget;
|
||||
export '/application_pages/schedule_provisional_visit_page/schedule_provisional_visit_page_widget.dart'
|
||||
export '/pages/schedule_provisional_visit_page/schedule_provisional_visit_page_widget.dart'
|
||||
show ScheduleProvisionalVisitPageWidget;
|
||||
export '/application_pages/on_boarding_page/on_boarding_page_widget.dart'
|
||||
export '/pages/on_boarding_page/on_boarding_page_widget.dart'
|
||||
show OnBoardingPageWidget;
|
||||
export '/application_pages/fast_pass_page/fast_pass_page_widget.dart'
|
||||
export '/pages/fast_pass_page/fast_pass_page_widget.dart'
|
||||
show FastPassPageWidget;
|
||||
export '/legacy/test/test_widget.dart' show TestWidget;
|
||||
export '/application_pages/people_on_the_property_page/people_on_the_property_page_widget.dart'
|
||||
export '/pages/people_on_the_property_page/people_on_the_property_page_widget.dart'
|
||||
show PeopleOnThePropertyPageWidget;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import '/application_components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart';
|
||||
import '/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_theme.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
||||
import '/flutter_flow/custom_functions.dart' as functions;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import '/application_components/molecular_components/throw_exception/throw_exception_widget.dart';
|
||||
import '/backend/api_requests/api_calls.dart';
|
||||
import '/components/molecular_components/throw_exception/throw_exception_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
||||
import '/custom_code/actions/index.dart' as actions;
|
||||
import 'login_page_widget.dart' show LoginPageWidget;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import '/application_components/molecular_components/opt_modal/opt_modal_widget.dart';
|
||||
import '/application_components/templates_components/visit_details_modal_template_component/visit_details_modal_template_component_widget.dart';
|
||||
import '/backend/api_requests/api_calls.dart';
|
||||
import '/components/molecular_components/opt_modal/opt_modal_widget.dart';
|
||||
import '/components/templates_components/visit_details_modal_template_component/visit_details_modal_template_component_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_icon_button.dart';
|
||||
import '/flutter_flow/flutter_flow_theme.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import '/application_components/organism_components/local_profile_component/local_profile_component_widget.dart';
|
||||
import '/application_components/organism_components/menu_component/menu_component_widget.dart';
|
||||
import '/application_components/organism_components/message_well_component/message_well_component_widget.dart';
|
||||
import '/components/organism_components/local_profile_component/local_profile_component_widget.dart';
|
||||
import '/components/organism_components/menu_component/menu_component_widget.dart';
|
||||
import '/components/organism_components/message_well_component/message_well_component_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
||||
import 'home_page_widget.dart' show HomePageWidget;
|
||||
import 'package:flutter/material.dart';
|
|
@ -1,7 +1,7 @@
|
|||
import '/application_components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart';
|
||||
import '/application_components/organism_components/local_profile_component/local_profile_component_widget.dart';
|
||||
import '/application_components/organism_components/menu_component/menu_component_widget.dart';
|
||||
import '/application_components/organism_components/message_well_component/message_well_component_widget.dart';
|
||||
import '/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart';
|
||||
import '/components/organism_components/local_profile_component/local_profile_component_widget.dart';
|
||||
import '/components/organism_components/menu_component/menu_component_widget.dart';
|
||||
import '/components/organism_components/message_well_component/message_well_component_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_icon_button.dart';
|
||||
import '/flutter_flow/flutter_flow_theme.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
|
@ -1,6 +1,6 @@
|
|||
import '/application_components/templates_components/sign_in_template_component/sign_in_template_component_widget.dart';
|
||||
import '/application_components/templates_components/sign_up_template_component/sign_up_template_component_widget.dart';
|
||||
import '/application_components/templates_components/welcome_template_component/welcome_template_component_widget.dart';
|
||||
import '/components/templates_components/sign_in_template_component/sign_in_template_component_widget.dart';
|
||||
import '/components/templates_components/sign_up_template_component/sign_up_template_component_widget.dart';
|
||||
import '/components/templates_components/welcome_template_component/welcome_template_component_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
||||
import 'on_boarding_page_widget.dart' show OnBoardingPageWidget;
|
||||
import 'package:flutter/material.dart';
|
|
@ -1,6 +1,6 @@
|
|||
import '/application_components/templates_components/sign_in_template_component/sign_in_template_component_widget.dart';
|
||||
import '/application_components/templates_components/sign_up_template_component/sign_up_template_component_widget.dart';
|
||||
import '/application_components/templates_components/welcome_template_component/welcome_template_component_widget.dart';
|
||||
import '/components/templates_components/sign_in_template_component/sign_in_template_component_widget.dart';
|
||||
import '/components/templates_components/sign_up_template_component/sign_up_template_component_widget.dart';
|
||||
import '/components/templates_components/welcome_template_component/welcome_template_component_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_theme.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
||||
import 'package:flutter/material.dart';
|
|
@ -1,5 +1,5 @@
|
|||
import '/application_components/molecular_components/throw_exception/throw_exception_widget.dart';
|
||||
import '/backend/api_requests/api_calls.dart';
|
||||
import '/components/molecular_components/throw_exception/throw_exception_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_drop_down.dart';
|
||||
import '/flutter_flow/flutter_flow_theme.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
|
@ -1,9 +1,9 @@
|
|||
import '/application_components/molecular_components/opt_modal/opt_modal_widget.dart';
|
||||
import '/application_components/molecular_components/throw_exception/throw_exception_widget.dart';
|
||||
import '/application_components/templates_components/visit_details_modal_template_component/visit_details_modal_template_component_widget.dart';
|
||||
import '/application_components/templates_components/visitor_search_modal_template_component/visitor_search_modal_template_component_widget.dart';
|
||||
import '/application_components/visitor_details_modal_template_component/visitor_details_modal_template_component_widget.dart';
|
||||
import '/backend/api_requests/api_calls.dart';
|
||||
import '/components/molecular_components/opt_modal/opt_modal_widget.dart';
|
||||
import '/components/molecular_components/throw_exception/throw_exception_widget.dart';
|
||||
import '/components/templates_components/visit_details_modal_template_component/visit_details_modal_template_component_widget.dart';
|
||||
import '/components/templates_components/visitor_details_modal_template_component/visitor_details_modal_template_component_widget.dart';
|
||||
import '/components/templates_components/visitor_search_modal_template_component/visitor_search_modal_template_component_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_drop_down.dart';
|
||||
import '/flutter_flow/flutter_flow_icon_button.dart';
|
||||
import '/flutter_flow/flutter_flow_theme.dart';
|
|
@ -1,6 +1,6 @@
|
|||
import '/application_components/molecular_components/throw_exception/throw_exception_widget.dart';
|
||||
import '/application_components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart';
|
||||
import '/backend/api_requests/api_calls.dart';
|
||||
import '/components/molecular_components/throw_exception/throw_exception_widget.dart';
|
||||
import '/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart';
|
||||
import '/flutter_flow/flutter_flow_theme.dart';
|
||||
import '/flutter_flow/flutter_flow_util.dart';
|
||||
import '/flutter_flow/flutter_flow_widgets.dart';
|
|
@ -27,9 +27,6 @@ dependencies:
|
|||
sdk: flutter
|
||||
auto_size_text: 3.0.0
|
||||
cached_network_image: 3.3.1
|
||||
cloud_functions: 4.6.7
|
||||
cloud_functions_platform_interface: 5.5.18
|
||||
cloud_functions_web: 4.7.1
|
||||
collection: 1.18.0
|
||||
crop_your_image: 1.0.0
|
||||
data_table_2: 2.5.10
|
||||
|
@ -38,12 +35,6 @@ dependencies:
|
|||
easy_debounce: 2.0.1
|
||||
equatable: 2.0.5
|
||||
file_picker: 6.1.1
|
||||
firebase_core: 2.26.0
|
||||
firebase_core_platform_interface: 5.0.0
|
||||
firebase_core_web: 2.11.5
|
||||
firebase_messaging: 14.7.18
|
||||
firebase_messaging_platform_interface: 4.5.26
|
||||
firebase_messaging_web: 3.6.7
|
||||
flutter_animate: 4.1.1+1
|
||||
flutter_cache_manager: 3.3.1
|
||||
flutter_plugin_android_lifecycle: 2.0.17
|
||||
|
|
Loading…
Reference in New Issue