У меня проблема с Dynami c Ссылки (Fireabase) для загрузки правильного маршрута при нажатии на URL.
- Я устанавливаю ссылку Просмотр / обзор в Firebase Dynami c Ссылки
- Я добавил коды SHA 1 и SHA 256 в приложение Android
- Приложение хорошо запускается и отслеживает клики внутри Firebase.
Только проблема I есть, это не повторно соединяет пользователя с правильным маршрутом. Он всегда идет к начальному маршруту вместо указанного. Я также попытался полностью открыть и закрыть приложение.
Вот мой код моего main.dart
void main() async {
SharedPreferences.setMockInitialValues({});
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations(
[DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);
FlutterError.onError = (FlutterErrorDetails details) {
if (!kReleaseMode) {
FlutterError.dumpErrorToConsole(details);
} else {
Zone.current.handleUncaughtError(details.exception, details.stack);
}
};
await FlutterCrashlytics().initialize();
runZoned<Future<Null>>(
() async {
runApp(App());
},
onError: (error, stackTrace) async {
if (kReleaseMode) {
await FlutterCrashlytics()
.reportCrash(error, stackTrace, forceCrash: false);
} else {
print(error.toString());
print(stackTrace.toString());
}
},
zoneSpecification: ZoneSpecification(
print: (Zone self, ZoneDelegate parent, Zone zone, String message) {
if (!kReleaseMode) {
final time = DateTime.now().toString().split(" ").last;
message = '${time.substring(0, time.length - 3)}: $message';
}
FlutterCrashlytics().log(message);
if (!kReleaseMode) {
parent.print(zone, message);
}
},
),
);
}
class App extends StatefulWidget {
@override
_AppState createState() => _AppState();
}
class _AppState extends State<App> {
@override
void initState() {
super.initState();
this.initDynamicLinks();
}
void initDynamicLinks() async {
final PendingDynamicLinkData data =
await FirebaseDynamicLinks.instance.getInitialLink();
final Uri deepLink = data?.link;
if (deepLink != null) {
Navigator.pushNamed(context, deepLink.path);
}
FirebaseDynamicLinks.instance.onLink(
onSuccess: (PendingDynamicLinkData dynamicLink) async {
final Uri deepLink = dynamicLink?.link;
if (deepLink != null) {
Navigator.pushNamed(context, deepLink.path);
}
}, onError: (OnLinkErrorException e) async {
print('onLinkError');
print(e.message);
});
}
@override
Widget build(BuildContext context) {
final FirestoreService _db = FirestoreService();
return MultiProvider(
providers: [
ChangeNotifierProvider(
create: (context) => OnboardinginfosUser(),
),
FutureProvider(
create: (context) => ProfileService().getUserById(context),
catchError: (context, error) {
print(error.toString());
},
)
],
child: MaterialApp(
title: 'XYZ',
theme: ThemeData(
brightness: Brightness.light,
unselectedWidgetColor: Colors.grey,
canvasColor: Colors.white,
backgroundColor: Color(0xFFffffff),
buttonColor: Color(0xFF001C7D),
primaryColor: Color(0xFF001C7D),
accentColor: Color(0xFFFFA800),
textTheme: TextTheme(
body1: TextStyle(
color: Color(0xFF333333),
fontSize: 16,
letterSpacing: -0.0003,
fontFamily: 'Roboto',
),
)),
home: SplashScreen(),
routes: {
HomeScreen.routeName: (ctx) => HomeScreen(),
SplashScreen.routeName: (ctx) => SplashScreen(),
'/review': (BuildContext context) => ReviewFormScreen(),
},
onUnknownRoute: (settings) {
return MaterialPageRoute(builder: (ctx) => HomeScreen());
},
),
);
}
}