如何在 Flutter 中拥有动态大小的 CustomPainter?

How to have a dynamically sized CustomPainter in Flutter?

考虑 Flutter docs 中的以下代码:

CustomPaint(
  painter: Sky(),
  child: const Center(
    child: Text(
      'Once upon a time...',
      style: TextStyle(
        fontSize: 40.0,
        fontWeight: FontWeight.w900,
        color: Color(0xFFFFFFFF),
      ),
    ),
  ),
)

我不想要文本小部件。

我不希望 CustomPaint 小部件被子小部件遮挡。

此外,我希望 CustomPaint 小部件能够填充任何可用的 space。

我认为解决方案是用 Expanded 之类的 BLANK 小部件替换 Text 小部件。

但是,我尝试了各种组合的 Expanded、Container、Spacer 和 Space 小部件,但总是出现错误或大小为零。

谢谢!

您可以使用 MediaQuery 获取屏幕的高度和宽度并使用它们

final width = MediaQuery.of(context).size.width;
    final height = MediaQuery.of(context).size.height;
    return CustomPaint(
      size: Size(width,height),
      painter: Sky(),
      child: const Center(
        child: Text(
          'Once upon a time...',
          style: TextStyle(
            fontSize: 40.0,
            fontWeight: FontWeight.w900,
            color: Color(0xFFFFFFFF),
          ),
        ),
      ),
    );

操作方法如下:

Expanded(
  child: CustomPaint(
    painter: MyCustomPainter(),
    size: Size.infinite,

  ),
),