這是我的代碼...我需要使初始 URL 動態化,以便可以多次使用它。如何使類引數化?這樣我就可以像函式一樣呼叫它?我正在嘗試使其可重用。有什么方法可以使它成為可選或引數化的嗎?
class defaultWebpage extends StatefulWidget {
const defaultWebpage({Key? key}) : super(key: key);
@override
State<defaultWebpage> createState() => _defaultWebpageState();
}
class _defaultWebpageState extends State<defaultWebpage> {
int position = 1;
@override
WebViewController? controller;
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async {
if (await controller!.canGoBack()) {
controller?.goBack();
return false;
} else {
return true;
}
},
child: IndexedStack(
index: position,
children: [
WebView(
initialUrl: "https://stackoverflow.com/",
javascriptMode: JavascriptMode.unrestricted,
onPageStarted: (value) {
setState(() {
position = 1;
});
},
onPageFinished: (value) {
setState(() {
position = 0;
controller?.evaluateJavascript(
"document.getElementsByClassName('navbar-wrapper')[0].style.display='none'");
controller?.evaluateJavascript(
"document.getElementsByClassName('footer')[0].style.display='none'");
});
},
onWebViewCreated: (controller) {
this.controller = controller;
}),
Container(
child: Center(
child: shimmer_effect(),
),
)
],
),
);
}
}
uj5u.com熱心網友回復:
defaultWebpage(url:yourDynamicUrl)
class defaultWebpage extends StatefulWidget {
defaultWebpage({Key? key,required this.url}) : super(key: key);
String url;
@override
State<defaultWebpage> createState() => _defaultWebpageState();
}
class _defaultWebpageState extends State<defaultWebpage> {
int position = 1;
@override
WebViewController? controller;
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async {
if (await controller!.canGoBack()) {
controller?.goBack();
return false;
} else {
return true;
}
},
child: IndexedStack(
index: position,
children: [
WebView(
initialUrl: widget.url,
javascriptMode: JavascriptMode.unrestricted,
onPageStarted: (value) {
setState(() {
position = 1;
});
},
onPageFinished: (value) {
setState(() {
position = 0;
controller?.evaluateJavascript(
"document.getElementsByClassName('navbar-wrapper')[0].style.display='none'");
controller?.evaluateJavascript(
"document.getElementsByClassName('footer')[0].style.display='none'");
});
},
onWebViewCreated: (controller) {
this.controller = controller;
}),
Container(
child: Center(
child: shimmer_effect(),
),
)
],
),
);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/523022.html
