首页 > 解决方案 > 更新 Flutter 后的绘制问题

问题描述

今天,当我更新 Flutter 时,我的绘制方法开始出现错误,以前从未引起任何问题:

@override
void paint(
    PaintingContext context,
    Offset center, {
    Animation<double> activationAnimation,
    Animation<double> enableAnimation,
    bool isDiscrete,
    TextPainter labelPainter,
    RenderBox parentBox,
    SliderThemeData sliderTheme,
    TextDirection textDirection,
    double value,
  }) {

这是错误:

error: 'CustomSlider.paint' ('void Function(PaintingContext, Offset, {Animation<double> activationAnimation, Animation<double> enableAnimation, bool isDiscrete, TextPainter labelPainter, RenderBox parentBox, SliderThemeData sliderTheme, TextDirection textDirection, double value})')
isn't a valid override of 'SliderComponentShape.paint' ('void Function(PaintingContext, Offset, {Animation<double> activationAnimation, Animation<double> enableAnimation, bool isDiscrete, TextPainter labelPainter, RenderBox parentBox, Size sizeWithOverflow, SliderThemeData sliderTheme, TextDirection textDirection, double textScaleFactor, double value})'). 
(invalid_override at [app_name] lib/Home/path_to_file:20)

标签: flutterdart

解决方案


看起来您现在需要在覆盖中指定 sizeWithOverflow:https ://api.flutter.dev/flutter/material/SliderComponentShape/paint.html 我不熟悉该字段,但似乎有一个描述Github 代码中的那个参数:

https://github.com/flutter/flutter/blob/2ae34518b8/packages/flutter/lib/src/material/slider_theme.dart#L1006

因此,您需要将上述内容更改为:

@override
void paint(
    PaintingContext context,
    Offset center, {
    Animation<double> activationAnimation,
    Animation<double> enableAnimation,
    bool isDiscrete,
    TextPainter labelPainter,
    RenderBox parentBox,
    Size sizeWithOverflow, /*The missing link*/
    double textScaleFactor, /*And the missing link I missed*/
    SliderThemeData sliderTheme,
    TextDirection textDirection,
    double value,
  }) {

希望有帮助。

PS 我建议将来使用文本比较工具来更轻松地解决此类问题。我喜欢使用 BeyondCompare,但这就是我。


推荐阅读