В трепетании, как я могу ввести сценарий `js`atDocumentStart` вместо`onload`?
Я пытаюсь создать webview
в трепетании, что пользователь может в качестве веб-браузера, который вводит некоторые js
код документа до его загрузки (atDocumentStart
).
У меня есть несколько способов, но всегда кажется, чтобы ввести код слишком поздно (onload
).
final String injectScript = ("some js code");
class WebPage extends StatefulWidget {
WebPage({Key key, this.title}) : super(key: key);
final String title;
@override
_WebPageState createState() => _WebPageState();
}
class _WebPageState extends State<WebPage> {
GlobalKey<ScaffoldState> scaffoldState;
bool isLoading = false;
final assetIdController = TextEditingController(text: "");
bool isValid = true;
static Completer<WebViewController> _webViewController =
Completer<WebViewController>();
@override
void initState() {
super.initState();
}
Widget favoriteButton() {
return FutureBuilder<WebViewController>(
future: _webViewController.future,
builder: (BuildContext context,
AsyncSnapshot<WebViewController> controller) {
if (controller.hasData) {
return FloatingActionButton(
onPressed: () async {
// TOO LATE HERE:
controller.data.evaluateJavascript(injectScript);
},
child: const Icon(Icons.refresh),
);
}
return Container();
});
}
@override
Widget build(BuildContext context) {
return new Scaffold(
key: scaffoldState,
appBar: AppBar(
centerTitle: true,
elevation: 0.0,
iconTheme: IconThemeData(color: Theme.of(context).primaryColor),
backgroundColor: Theme.of(context).canvasColor,
),
backgroundColor: const Color(0xFFF8F8F8),
body: WebView(
initialUrl: 'https://communities-qa.cln.network',
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController webViewController) async {
// NOT WORKING HERE:
// await webViewController.evaluateJavascript(injectScript);
_webViewController.complete(webViewController);
},
),
floatingActionButton: favoriteButton(),);
}
}
Я ожидаю, что он загрузит код перед страницей (страница, основанная на проверенном коде для запуска). но уже слишком поздно или не работает.