Android用のWebViewを追加。OSのブラウザは起動できないため。
This commit is contained in:
21
lib/pages/WebView/WebView_page.dart
Normal file
21
lib/pages/WebView/WebView_page.dart
Normal file
@ -0,0 +1,21 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:webview_flutter/webview_flutter.dart';
|
||||
|
||||
class WebViewPage extends StatelessWidget {
|
||||
final String url;
|
||||
|
||||
const WebViewPage({Key? key, required this.url}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('WebView'),
|
||||
),
|
||||
body: WebView(
|
||||
initialUrl: url,
|
||||
javascriptMode: JavascriptMode.unrestricted,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -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(
|
||||
|
||||
Reference in New Issue
Block a user