Сделать кнопку только на одной конкретной страничке webview flutter
Всем привет, я только начал изучать webview flutter и хочу добавить кнопку на конкретной страничкe в webview. Каким образом можно это реализовать?
Например у меня есть код, webview отображает youtube:
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Welcome to Flutter',
home: Scaffold(
appBar: AppBar(
title: Text('Welcome to Flutter'),
),
body: const WebView(
initialUrl: 'https://www.youtube.com/',
javascriptMode: JavascriptMode.unrestricted,
),
)
);
}
}
Как можно реализовать кнопку только на странице https://www.youtube.com/feed/library. Что бы кнопка отображалась только на данной странице, а на других её не было. Помогите реализовать данную кнопку!
Ответы (1 шт):
Автор решения: Денис Пикс
→ Ссылка
Как то так дальше думаю разберешься. В body поменяй на WebViewWidget(url: 'https://www.youtube.com/')
class WebViewWidget extends StatefulWidget {
final String url;
const WebViewWidget({Key? key, required this.url}) : super(key: key);
@override
_WebViewWidgetState createState() => _WebViewWidgetState();
}
class _WebViewWidgetState extends State<WebViewWidget> {
bool showButton = false;
bool isLoading = true;
late WebViewController _webView;
final Completer<WebViewController> _controllerCompleter =
Completer<WebViewController>();
//Make sure this function return Future<bool> otherwise you will get an error
Future<bool> _onWillPop(BuildContext context) async {
if (await _webView.canGoBack()) {
_webView.goBack();
return Future.value(false);
} else {
return Future.value(true);
}
}
@override
void initState() {
super.initState();
if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();
}
@override
Widget build(BuildContext context) {
return Center(
child: Container(
constraints: BoxConstraints(maxWidth: UIUtil.newsCardWidth(context)),
child: WillPopScope(
onWillPop: () => _onWillPop(context),
child: WebView(
initialUrl: widget.url',
gestureNavigationEnabled: true,
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController webViewController) {
_controllerCompleter.future.then((value) => _webView = value);
_controllerCompleter.complete(webViewController);
},
onPageFinished: (String s) {
setState(() {
isLoading = false;
});
},
navigationDelegate: (NavigationRequest request) {
if (request.url.startsWith('https://www.youtube.com/feed/library')) {
setState(() {
showButton = true;
});
}
return NavigationDecision.navigate;
},
),
),
),
);
}
}