WIP
This commit is contained in:
parent
69ecb375dd
commit
36931e14b0
|
@ -3,7 +3,7 @@
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>FlutterDeepLinkingEnabled</key>
|
<key>FlutterDeepLinkingEnabled</key>
|
||||||
<false/>
|
<true/>
|
||||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>CFBundleDevelopmentRegion</key>
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
|
|
@ -181,47 +181,32 @@ class _AppState extends State<App> {
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
@override void initState() {
|
|
||||||
super.initState();
|
|
||||||
|
|
||||||
FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
|
|
||||||
_appStateNotifier = AppStateNotifier.instance;
|
|
||||||
_router = createRouter(_appStateNotifier);
|
|
||||||
Future.delayed(const Duration(milliseconds: 1000),
|
|
||||||
() => setState(() => _appStateNotifier.stopShowingSplashImage()));
|
|
||||||
|
|
||||||
_setupFirebaseMessaging();
|
|
||||||
WidgetsBinding.instance.addPersistentFrameCallback((_) => initDeepLinks());
|
|
||||||
}
|
|
||||||
@override void dispose() {
|
|
||||||
_linkSubscription?.cancel();
|
|
||||||
super.dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Future<void> initDeepLinks() async {
|
Future<void> initDeepLinks() async {
|
||||||
_appLinks = AppLinks();
|
_appLinks = AppLinks();
|
||||||
_linkSubscription = _appLinks.uriLinkStream.listen((uri) {
|
_linkSubscription = _appLinks.uriLinkStream.listen((uri) {
|
||||||
debugPrint('onAppLink: $uri');
|
final bool isRecovered = StorageUtil().isRecovered;
|
||||||
openAppLink(uri);
|
if (isRecovered) openAppLink(uri);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void openAppLink(Uri uri) {
|
void openAppLink(Uri uri) {
|
||||||
log('openAppLink');
|
final bool isRecovered = !StorageUtil().isRecovered;
|
||||||
log(uri.toString());
|
if(isRecovered) return;
|
||||||
|
StorageUtil().isRecovered = false;
|
||||||
|
|
||||||
final String email = uri.queryParameters['email'] ?? '';
|
final String email = uri.queryParameters['email'] ?? '';
|
||||||
final String token = uri.queryParameters['token'] ?? '';
|
final String token = uri.queryParameters['token'] ?? '';
|
||||||
log('Email: $email');
|
final BuildContext context = StorageUtil().context!;
|
||||||
log('Token: $token');
|
final Future<Object?> Function(String, {Object? extra}) nav = context.push;
|
||||||
|
final bool isNotEmpty = email.isNotEmpty && token.isNotEmpty;
|
||||||
|
log('openAppLink: $uri');
|
||||||
|
|
||||||
|
if (isNotEmpty) nav('/forgotPassword', extra: {'email': email, 'token': token});
|
||||||
|
|
||||||
// Use the extracted email and token as needed
|
// Use the extracted email and token as needed
|
||||||
// navigatorKey.currentState?.pushNamed('/forgotPassword', arguments: {'email': email, 'token': token});
|
// navigatorKey.currentState?.pushNamed('/forgotPassword', arguments: {'email': email, 'token': token});
|
||||||
if (email.isNotEmpty && token.isNotEmpty)
|
|
||||||
StorageUtil().context?.push('/forgotPassword', extra: {'email': email, 'token': token});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void _setupFirebaseMessaging() async {
|
void _setupFirebaseMessaging() async {
|
||||||
FirebaseMessaging messaging = FirebaseMessaging.instance;
|
FirebaseMessaging messaging = FirebaseMessaging.instance;
|
||||||
RemoteMessage? initialMessage = await messaging.getInitialMessage();
|
RemoteMessage? initialMessage = await messaging.getInitialMessage();
|
||||||
|
@ -261,8 +246,23 @@ class _AppState extends State<App> {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@override
|
@override void initState() {
|
||||||
Widget build(BuildContext context) {
|
super.initState();
|
||||||
|
|
||||||
|
FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
|
||||||
|
_appStateNotifier = AppStateNotifier.instance;
|
||||||
|
_router = createRouter(_appStateNotifier);
|
||||||
|
Future.delayed(const Duration(milliseconds: 1000),
|
||||||
|
() => setState(() => _appStateNotifier.stopShowingSplashImage()));
|
||||||
|
|
||||||
|
_setupFirebaseMessaging();
|
||||||
|
WidgetsBinding.instance.addPersistentFrameCallback((_) => initDeepLinks());
|
||||||
|
}
|
||||||
|
@override void dispose() {
|
||||||
|
_linkSubscription?.cancel();
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
@override Widget build(BuildContext context) {
|
||||||
return MaterialApp.router(
|
return MaterialApp.router(
|
||||||
key: navigatorKey,
|
key: navigatorKey,
|
||||||
title: 'FRE ACCESS HUB',
|
title: 'FRE ACCESS HUB',
|
||||||
|
|
|
@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_animate/flutter_animate.dart';
|
import 'package:flutter_animate/flutter_animate.dart';
|
||||||
import 'package:google_fonts/google_fonts.dart';
|
import 'package:google_fonts/google_fonts.dart';
|
||||||
import 'package:hub/flutter_flow/nav/nav.dart';
|
import 'package:hub/flutter_flow/nav/nav.dart';
|
||||||
|
import 'package:hub/shared/utils/storage_util.dart';
|
||||||
|
|
||||||
import '../../components/atomic_components/shared_components_atoms/atom_image_svg_theme.dart';
|
import '../../components/atomic_components/shared_components_atoms/atom_image_svg_theme.dart';
|
||||||
import '../../flutter_flow/flutter_flow_animations.dart';
|
import '../../flutter_flow/flutter_flow_animations.dart';
|
||||||
|
@ -111,6 +112,7 @@ class _ForgotPasswordScreenState extends State<ForgotPasswordScreen> with Ticker
|
||||||
),
|
),
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
context.pop();
|
context.pop();
|
||||||
|
StorageUtil().isRecovered = true;
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
title: Text(
|
title: Text(
|
||||||
|
|
|
@ -184,6 +184,12 @@ class StorageUtil {
|
||||||
log('SQLiteStorageHelper: Initialization complete');
|
log('SQLiteStorageHelper: Initialization complete');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool _isRecovered = true;
|
||||||
|
bool get isRecovered => _isRecovered;
|
||||||
|
set isRecovered(bool value) => _isRecovered = value;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool _isFirstRun = true;
|
bool _isFirstRun = true;
|
||||||
bool get isFirstRun => _isFirstRun;
|
bool get isFirstRun => _isFirstRun;
|
||||||
set isFirstRun(bool value) {
|
set isFirstRun(bool value) {
|
||||||
|
|
Loading…
Reference in New Issue