0
0

画像の上に指定されたpaddingに合わせて画像を表示する方法

Posted at

やたら時間をかけて悩んでしまったので備忘録。

やりたいこと

画像の上に、指定されたpaddingに合わせて画像を重ねたい。。

試したこと

Stackを使えばちょろい

重ねる=Stack使えばすぐ実現すると思ってた。
こんな感じで実装。

Stack(
   fit: StackFit.passthrough,
   children: [
      Image.asset('背景になる画像', fit: BoxFit.fill),
      Padding(
         padding: const EdgeInsets.all(10),//指定されたpadding
         child: Row(
            children: [
               Image.asset(
                   '重ねる画像',
                    fit: BoxFit.fill,
               ),
               Text('hoge')
            ]),
          ),
   ],
),

問題点

端末に合わせて背景になる画像の大きさが変わったとき、paddingの大きさも変わってしまう。
親ウィジェットの大きさを取得することができるLayoutBuilderを使えば解決する?

結論:DecorationImageを使用する

Container(
    padding:const EdgeInsets.all(5.0),//指定されたpadding
    decoration: BoxDecoration(
        image:DecorationImage(
            image:AssetImage('背景になる画像'),
            fit:BoxFit.fill,
        )
   ),
   child: Row(
        mainAxisSize:MainAxisSize.min,
        children: [
            Image.asset(
                '重ねる画像',
                fit: BoxFit.fill,
            ),
            Text('hoge')
       ],
   ),
)

指定されたpaddingで実装しても縦幅が自動的に変化した。

まとめ

調べてみたらいろんなサイトでDecorationImageについて紹介していた(調べ方が悪くなかなか辿り着けなかった)。
Containerってなんでもできて(?)すごい。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0