TF-3278 Handle open app via deep link at TwakeWelcome screen

This commit is contained in:
dab246
2024-11-19 04:17:59 +07:00
committed by Dat H. Pham
parent c6ed9f7c2b
commit 4817b31191
13 changed files with 385 additions and 189 deletions
+29 -1
View File
@@ -1,17 +1,20 @@
import 'package:core/presentation/utils/theme_utils.dart';
import 'package:core/utils/app_logger.dart';
import 'package:core/utils/build_utils.dart';
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/caching/config/hive_cache_config.dart';
import 'package:tmail_ui_user/main/bindings/main_bindings.dart';
import 'package:tmail_ui_user/main/deep_links/deep_links_manager.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations_delegate.dart';
import 'package:tmail_ui_user/main/localizations/localization_service.dart';
import 'package:tmail_ui_user/main/pages/app_pages.dart';
import 'package:tmail_ui_user/main/routes/app_routes.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
import 'package:tmail_ui_user/main/utils/app_utils.dart';
import 'package:url_strategy/url_strategy.dart';
import 'package:worker_manager/worker_manager.dart';
@@ -39,9 +42,26 @@ Future<void> runTmail() async {
runApp(const TMailApp());
}
class TMailApp extends StatelessWidget {
class TMailApp extends StatefulWidget {
const TMailApp({Key? key}) : super(key: key);
@override
State<TMailApp> createState() => _TMailAppState();
}
class _TMailAppState extends State<TMailApp> {
DeepLinksManager? _deepLinksManager;
@override
void initState() {
super.initState();
if (PlatformInfo.isMobile) {
_deepLinksManager = getBinding<DeepLinksManager>();
_deepLinksManager?.registerDeepLinkStreamListener();
}
}
@override
Widget build(BuildContext context) {
return GetMaterialApp(
@@ -79,4 +99,12 @@ class TMailApp extends StatelessWidget {
builder: FlutterSmartDialog.init(),
);
}
@override
void dispose() {
if (PlatformInfo.isMobile) {
_deepLinksManager?.dispose();
}
super.dispose();
}
}