Flutter Animated Switcher似乎改变了子尺寸

时间:2018-12-03 07:53:42

标签: flutter flutter-layout

当我在AnimatedSwitcher中包装CustomPaint的子代时,该子代小部件不再考虑外部容器的大小。

下面的一些测试代码。

在切换器被注释掉的情况下,根据需要,该文本显示在左上角。取消对切换器的注释,将文本移动到屏幕的中央,就像没有SizedBox.expand一样。

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: SizedBox.expand(
          child: CustomPaint(
            painter: Painter(),
//            child: AnimatedSwitcher(
//              duration: Duration(milliseconds: 500),
              child: Padding(
                padding: const EdgeInsets.all(16.0),
                child: Text(
                  '$_counter',
                  style: Theme.of(context).textTheme.display1,
                  key: ValueKey<int>(_counter),
                ),
              ),
            ),
          ),
//    ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }


class Painter extends CustomPainter {
  Paint _bgPaint = Paint()
  ..style = PaintingStyle.fill
  ..color = Colors.lightBlue;
  @override
  void paint(Canvas canvas, Size size) {
    Rect fullScreen = const Offset(0.0, 0.0) & size;
    canvas.drawRect(fullScreen, _bgPaint);
  }
  @override
  bool shouldRepaint(CustomPainter oldDelegate) {
    return true;
  }
}

我可以将Text本身包装在另一个SizedBox.expand中,但是为什么AnimatedSwitcher使其必要?

0 个答案:

没有答案