Flutter CustomPaint paint方法每帧都会调用

本以为shouldRepaint方法返回false就不会触发了,结果还是会。

@override
  bool shouldRepaint(CustomPainter oldDelegate) {
    return false;
  }

结果发现需要在CustomPaint外面用RepaintBoundary包装一层。

这下就不会每帧都触发了,开森哦!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Flutter 可以通过 `flutter_webview_plugin` 插件来调用 WebView 中的 JavaScript 方法。 首先,在 Flutter 中引入 `flutter_webview_plugin` 插件: ```dart dependencies: flutter_webview_plugin: ^0.3.5+1 ``` 然后在需要使用 WebView 的页面中,导入插件并创建 WebView: ```dart import 'package:flutter_webview_plugin/flutter_webview_plugin.dart'; class WebViewPage extends StatefulWidget { @override _WebViewPageState createState() => _WebViewPageState(); } class _WebViewPageState extends State<WebViewPage> { FlutterWebviewPlugin flutterWebviewPlugin = FlutterWebviewPlugin(); String url = 'https://www.example.com'; @override Widget build(BuildContext context) { return WebviewScaffold( url: url, withJavascript: true, ); } } ``` 在 `WebviewScaffold` 中设置 `withJavascript` 为 `true`,表示开启 WebView 中的 JavaScript 功能。 接下来,可以通过 `evaluateJavascript` 方法调用 WebView 中的 JavaScript 方法,例如: ```dart flutterWebviewPlugin.evalJavascript('window.alert("Hello, world!")'); ``` 这里调用了 JavaScript 中的 `alert` 方法,弹出一个提示框。 完整的示例代码如下: ```dart import 'package:flutter/material.dart'; import 'package:flutter_webview_plugin/flutter_webview_plugin.dart'; class WebViewPage extends StatefulWidget { @override _WebViewPageState createState() => _WebViewPageState(); } class _WebViewPageState extends State<WebViewPage> { FlutterWebviewPlugin flutterWebviewPlugin = FlutterWebviewPlugin(); String url = 'https://www.example.com'; @override void initState() { super.initState(); flutterWebviewPlugin.onStateChanged.listen((WebViewStateChanged state) { print('onStateChanged: ${state.type} ${state.url}'); }); } @override Widget build(BuildContext context) { return WebviewScaffold( url: url, withJavascript: true, appBar: AppBar( title: Text('WebView'), ), bottomNavigationBar: BottomAppBar( child: Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ IconButton( icon: Icon(Icons.arrow_back), onPressed: () { flutterWebviewPlugin.goBack(); }, ), IconButton( icon: Icon(Icons.arrow_forward), onPressed: () { flutterWebviewPlugin.goForward(); }, ), IconButton( icon: Icon(Icons.refresh), onPressed: () { flutterWebviewPlugin.reload(); }, ), IconButton( icon: Icon(Icons.info), onPressed: () { flutterWebviewPlugin.evalJavascript('window.alert("Hello, world!")'); }, ), ], ), ), ); } } ``` 在底部导航栏中添加了返回、前进、刷新和弹出提示框的按钮,点击弹出提示框时调用 JavaScript 中的 `alert` 方法
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值