Когда я оборачиваю дочерний элемент CustomPaint в AnimatedSwitcher, этот дочерний виджет больше не учитывает размер внешнего контейнера.
Ниже приведен тестовый код.
С закомментированным переключателем текст появляется, как я хочу, в верхнем левом углу.Раскомментирование переключателя перемещает текст в центр экрана, как если бы 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;
}
}
Я могу обернуть сам текст в другой SizedBox.expand
, но почему AnimatedSwitcher делаетэто необходимо?