👌
Flutterにおけるネガティブマージン(マイナスマージン)
Flutterにおけるネガティブマージン(マイナスマージン)
StackOverflowを引用しつつとなりますが、以下のアプローチがありそうです
1. Positioned
前提として、Flutterはマージンの概念はなく、Paddingで構成します。
なので、Flutterはマイナスマージンを直接的にはできないですが、Positioned(cssでいうところの position: 'absolute'
)で Stack を利用し、重なる形で実装することで擬似的に実装できる。
Container(
constraints: BoxConstraints.loose(Size.fromHeight(60.0)),
decoration: BoxDecoration(color: Colors.black),
child:
Stack(
alignment: Alignment.topCenter,
overflow: Overflow.visible,
children: [
Positioned(
top: 10.0,
left: -15.0,
right: -15.0,
child: Text("OUTSIDE CONTAINER", style: TextStyle(color: Colors.red, fontSize: 24.0),)
)
]
)
)
2. Transform.translate
こっちのほうが認知負荷低くて簡単。個人的にはこちらを使っていきたい。(Positionedはよりレイアウト影響が大きいため)
Transform.translate(
// e.g: vertical negative margin
offset: const Offset(-10, 0),
child: ...
),
Ref
Discussion