Всем здравствуйте. Нужна помощь, подсказка или возможное решение проблемы.
Собственно сама проблема заключается в том, что при запуске приложения Flutter в через Telegram Bot как Telegram Mini App, появляется это:
Page Not Found
GoException: no routes for location: tgWebAppData=query_id%3DAAEZhREwAAAAABmFETBM12E3%26user%3D%257B%2522id%2522%253A806454553%252C%2522first_name%2522%253A%2522nik%2522%252C%2522last_name%2522%253A%2522Alex%2520%25F0%259F%2590%2588%25E2%2580%258D%25E2%25AC%259B%2522%252C%2522username%2522%253A%2522nikitasalnikov1788%2522%252C%2522language_code%2522%253A%2522ru%2522%252C%2522allows_write_to_pm%2522%253Atrue%257D%26auth_date%3D1731143638%26hash%3D8519149776b7756ef83550af8e26cfedba0c44baf637141f98116700c33aaa2e&tgWebAppVersion=7.10&tgWebAppPlatform=tdesktop&tgWebAppThemeParams=%7B%22accent_text_color%22%3A%22%23168acd%22%2C%22bg_color%22%3A%22%23ffffff%22%2C%22bottom_bar_bg_color%22%3A%22%23ffffff%22%2C%22button_color%22%3A%22%2340a7e3%22%2C%22button_text_color%22%3A%22%23ffffff%22%2C%22destructive_text_color%22%3A%22%23d14e4e%22%2C%22header_bg_color%22%3A%22%23ffffff%22%2C%22hint_color%22%3A%22%23999999%22%2C%22link_color%22%3A%22%23168acd%22%2C%22secondary_bg_color%22%3A%22%23f1f1f1%22%2C%22section_bg_color%22%3A%22%23ffffff%22%2C%22section_header_text_color%22%3A%22%23168acd%22%2C%22section_separator_color%22%3A%22%23e7e7e7%22%2C%22subtitle_text_color%22%3A%22%23999999%22%2C%22text_color%22%3A%22%23000000%22%7D
а внизу есть кнопка Home, которая собственно и открывает мое приложение.
Как мне избавиться от этого Page Not Found и GoException. Я читал информацию что телеграмм передает какие то параметры дополнительные. У себя в routes я прописывал такой код
abstract class AppNavigator {
static final GoRouter _router = GoRouter(
initialLocation: '/',
routes: [
GoRoute(path: AppRoutes.splash, builder: (context, state) => const SplashScreen(),),
GoRoute(
path: AppRoutes.home,
builder: (context, state) => const HomePage(),
),
],
redirect: (context, state){
final queryParams = state.uri.queryParameters.containsKey('tgWebAppData');
if (queryParams && state.uri.toString() != '/') {
return '/';
}
return null;
}
);
static GoRouter get router => _router;
}
это не помогает.
Также добавил в собранный командой
flutter build web -
index.html такой код
(function () {
if (location.search) {
const url = new URL(location);
url.search = '';
window.history.replaceState(null, '', url);
}
})();
</script>
<script src="https://telegram.org/js/telegram-web-app.js" defer=""></script>
в самом приложении Flutter использовал библиотеку telegram_web_app
в функции main добавил
try {
if (TelegramWebApp.instance.isSupported) {
TelegramWebApp.instance.ready();
Future.delayed(
const Duration(seconds: 1), TelegramWebApp.instance.expand);
}else {
log("Telegram Web App не поддерживается в этом окружении.");
}
} catch (e) {
log("Error happened in Flutter while loading Telegram $e");
// add delay for 'Telegram seldom not loading' bug
await Future.delayed(const Duration(milliseconds: 200));
main();
return;
}
FlutterError.onError = (details) {
log("Flutter error happened: $details");
};
само собранное веб приложение задеплоил на Vercel, так как воспользовавшись подсказкой ИИ, Github Pages не подойдет теста приложения.
Также читал эту статью
Пробуем Flutter в Telegram Mini Apps
Возможно я что то не так делаю с redirect в go_router. Но у них своя реализация, у меня своя, может и не совсем правильная.
При этом открывая ссылку напрямую в браузере, приложение запускается сразу, без каких либо проблем
В общем буду рад советам, помощи, и указания на то как избавиться от ошибки, чтобы приложение сразу запускалось.