相关疑难解决方法(0)

Flutter/dart 将整个部分 OFFSCREEN 小部件捕获为图像

对此答案的一些评论表明,可以捕获小部件的每个像素,即使它部分位于屏幕外。这个答案中的评论表明相反的观点。我一直无法弄清楚,我今天才开始搞乱它。这是我到目前为止的代码:

RenderRepaintBoundary boundary = globalKey.currentContext.findRenderObject();
ui.Image image = await boundary.toImage();
ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png);
Uint8List pngBytes = byteData.buffer.asUint8List();
Run Code Online (Sandbox Code Playgroud)

有人知道如何修改它以便捕获完整的小部件吗?或者这仅适用于屏幕上的小部件部分?

FWIW,在将这个问题标记为重复的类似问题中提供的答案被自我描述为故意破坏颤动为优化所做的事情,并且仅在最坏的情况下。我正在寻找一个不需要做两年内就会崩溃的疯狂事情的​​答案。

dart flutter flutter-widget

6
推荐指数
0
解决办法
607
查看次数

Flutter - 在 CustomPainter 中重用以前绘制的画布

我有一个 CustomPainter,我想每隔几毫秒渲染一些项目。但我只想渲染自上次绘制以来发生变化的项目。我计划手动清除将在该区域内更改和重绘的区域。问题是每次调用paint() 时,Flutter 中的画布似乎都是全新的。我知道我可以跟踪整个状态并每次都重绘所有内容,但出于性能原因和特定用例并不可取。以下是可能代表该问题的示例代码:

我知道当画布大小改变时,一切都需要重新绘制。

import 'dart:async';
import 'dart:math';

import 'package:flutter/material.dart';

class CanvasWidget extends StatefulWidget {
  CanvasWidget({Key key}) : super(key: key);

  @override
  _CanvasWidgetState createState() => _CanvasWidgetState();
}

class _CanvasWidgetState extends State<CanvasWidget> {
  final _repaint = ValueNotifier<int>(0);
  TestingPainter _wavePainter;

  @override
  void initState() {
    _wavePainter = TestingPainter(repaint: _repaint);
    Timer.periodic( Duration(milliseconds: 50), (Timer timer) {
      _repaint.value++;
    });
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return CustomPaint(
       painter: _wavePainter,
    );
  }
}

class TestingPainter extends CustomPainter {
  static const double _numberPixelsToDraw = 3;
  final …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-canvas

4
推荐指数
1
解决办法
1000
查看次数

标签 统计

flutter ×2

dart ×1

flutter-canvas ×1

flutter-widget ×1