Я разрабатываю приложение с использованием Flutter и использовал url_launcher
, а для маршрутизации использовал go_router
.
при разработке приложения и открытии URL-адреса все работает нормально, но при сборке и загрузке на мой сервер не работают ни url_launcher, ни go_router.
я имею в виду когда. я запускаю любой URL-адрес после загрузки сервера, он открыт с моим именем сервера
пример: если я открою свою учетную запись в социальной сети, используя URL, тогда
www.example.com/www.instagram.com/myinstaid
и когда я нажимаю прямой URL
www.example.com/dsc
тогда показывает, что эта страница не найдена. Я надеюсь, что вы понимаете, поэтому, пожалуйста, помогите мне в этом.
вот код для запуска URL
final Uri weburl = Uri(
scheme: 'https',
path: url,
);
try {
if (await canLaunchUrl(weburl)) {
await launchUrl(
weburl,
mode: LaunchMode.inAppWebView
);
}
}on PlatformException catch (e) {
debugPrint("PlatformException launchInBrowser : $e");
} on Exception catch (e) {
debugPrint( "Exception launchInBrowser : $e");
}
код роутера go:
final GoRouter router = GoRouter(
initialLocation: '/',
routes: <GoRoute>[
GoRoute(
path: '/',
name: URL_HOME,
builder: (BuildContext context, GoRouterState state) {
return const HomeScreen();
},
routes: <GoRoute>[
GoRoute(
path: URL_DSC,
name: URL_DSC,
builder: (BuildContext context, GoRouterState state) {
return const DSCCertificate();
},
),
GoRoute(
path: URL_APPLY_DSC,
name: URL_APPLY_DSC,
builder: (BuildContext context, GoRouterState state) {
return const ApplyDSCScreen();
}),
GoRoute(
path: URL_MSME,
name: URL_MSME,
builder: (BuildContext context, GoRouterState state) {
return const MSMEUdyamScreen();
},
),
GoRoute(
path: URL_FASTAG,
name: URL_FASTAG,
builder: (BuildContext context, GoRouterState state) {
return const FastagScreen();
}),
],
),
],
);
Спасибо :)
@ClevinoAlrin я добавил свой код. и вы также можете проверить URL-адрес в каталоге кода
Вы получили какое-либо сообщение об ошибке в консоли?
Для URL-адреса Insta вам не нужно добавлять URL-адрес вашего сервера. Что касается dsc вашей страницы, убедитесь, что это правильный путь... Можете ли вы рассказать, какое значение имеет URL_DSC
?
Полный URL-адрес @ClevinoAlrin — www.example.com/dsc. Значение URL_DSC — это просто dsc, во время навигации он работает, но всякий раз, когда я запускаю веб-сайт, а затем нажимаю прямо над URL-адресом, страница «Показать мне» не найдена, навигация работала, но прямая ссылка не работает, надеюсь ты понимаешь
Вы пытаетесь открыть свое приложение И другие URL-адреса в inAppWebView
?
я обнаружил, что проблема заключается в использовании, когда usePathUrlStrategy(); в main() используйте, потому что удалите #, но когда я удалю этот usePathUrlStrategy(); затем # присутствует в URL
наконец-то я решаю эту проблему после долгих дней
во-первых
Добавьте пакет url_strategy в мои зависимости pubspec.yaml
.
В моем файле main.dart импортируйте пакет и вызовите setPathUrlStrategy() перед запуском моего приложения:
import 'package:url_strategy/url_strategy.dart';
void main() {
setPathUrlStrategy(); // This removes the hash from the URL
runApp(MyApp());
}
я поместил этот код в файл .htaccess
(если он не существует, вы можете создать его) основной сервер моего public_html
RewriteEngine On
RewriteBase
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /index.html [L]
это поможет мне открыть URL-адрес глубокой ссылки, и если я захочу открыть любой другой домен, я просто использую код ниже.
импортировать HTML импортируйте «dart:html» как html;
и использовал его
html.window.open('https://www.facebook.com/burhanisolution', 'new tab');
Добавьте немного кода, чтобы мы могли выяснить ошибку. Коды страниц, таких как main.dart, вызов упомянутого вами URL и т. д., были бы полезны.