Android用のWebViewを追加。OSのブラウザは起動できないため。

This commit is contained in:
2024-04-30 22:11:33 +09:00
parent 08dd823c41
commit 9d8f1ef31a
5 changed files with 83 additions and 8 deletions

View File

@ -6,6 +6,7 @@ import 'package:rogapp/routes/app_pages.dart';
import 'package:rogapp/services/auth_service.dart';
import 'package:rogapp/utils/database_helper.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:rogapp/pages/WebView/WebView_page.dart';
// SafeAreaウィジェットを使用して、画面の安全領域内にメニューを表示しています。
// Columnウィジェットを使用して、メニューアイテムを縦に並べています。
@ -23,12 +24,26 @@ class DrawerPage extends StatelessWidget {
}
*/
void _launchURL(String urlString) async {
Uri url = Uri.parse(urlString);
if (await canLaunchUrl(url)) {
await launchUrl(url);
} else {
throw 'Could not launch $url';
void _launchURL(BuildContext context,String urlString) async {
try {
Uri url = Uri.parse(urlString);
if (await canLaunchUrl(url)) {
await launchUrl(url);
} else {
// URLを開けない場合のフォールバック動作
// 例えば、WebViewを使用してアプリ内でURLを開く
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => WebViewPage(url: urlString),
),
);
}
}catch(e){
// エラーメッセージを表示する
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('URLを開けませんでした: $e')),
);
}
}
@ -242,7 +257,7 @@ class DrawerPage extends StatelessWidget {
leading: const Icon(Icons.featured_video),
title: Text("rog_web".tr),
onTap: () {
_launchURL("https://www.gifuai.net/?page_id=60043");
_launchURL(context, "https://www.gifuai.net/?page_id=60043");
},
)
: const SizedBox(
@ -255,7 +270,7 @@ class DrawerPage extends StatelessWidget {
leading: const Icon(Icons.privacy_tip),
title: Text("privacy".tr),
onTap: () {
_launchURL("https://rogaining.sumasen.net/api/privacy/");
_launchURL(context, "https://rogaining.sumasen.net/api/privacy/");
},
),
ListTile(