I wrote custom webview widget to interact between webview javascript and other widgets. But I can't run the test.
// Automatic FlutterFlow imports
import '/backend/backend.dart';
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import '/custom_code/widgets/index.dart'; // Imports other custom widgets
import '/flutter_flow/custom_functions.dart'; // Imports custom functions
import 'package:flutter/material.dart';
// Begin custom widget code
// DO NOT REMOVE OR MODIFY THE CODE ABOVE!
import 'package:webview_flutter/webview_flutter.dart';
import 'package:webview_flutter_wkwebview/webview_flutter_wkwebview.dart';
class InteractiveWebView extends StatefulWidget {
const InteractiveWebView({
super.key,
this.width,
this.height,
required this.threadId,
});
final double? width;
final double? height;
final String threadId;
@override
State<InteractiveWebView> createState() => _InteractiveWebViewState();
}
class _InteractiveWebViewState extends State<InteractiveWebView> {
late final WebViewController _controller;
@override
void initState() {
super.initState();
final PlatformWebViewControllerCreationParams params =
const PlatformWebViewControllerCreationParams();
_controller = WebViewController.fromPlatformCreationParams(params)
..setJavaScriptMode(JavaScriptMode.unrestricted)
..addJavaScriptChannel(
'JSChannel',
onMessageReceived: (JavaScriptMessage message) {
_showSnackbar(message.message);
},
)
..loadRequest(
Uri.parse(
'https://babble-a09e7.web.app/testwebview.html/${widget.threadId}'),
);
}
void _showSnackbar(String text) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Message from Web: $text')),
);
}
@override
Widget build(BuildContext context) {
return SizedBox(
width: widget.width ?? double.infinity,
height: widget.height ?? 500,
child: WebViewWidget(controller: _controller),
);
}
}
I got this error >>
"A platform implementation for webview_flutter
has not been set. Please ensure that an implementation of WebViewPlatform
has been set to WebViewPlatform.instance
before use. For unit testing, WebViewPlatform.instance
can be set with your own test implementation."