flutter 如何添加堆叠在彼此之上的图像

cbjzeqam  于 2023-01-18  发布在  Flutter
关注(0)|答案(2)|浏览(245)

我想添加一个不同的人的图像作为附件(内圆头像堆叠在另一个图像)。如何实现这一点。我尝试了下面的代码,但没有得到预期的结果

Padding(
  padding: EdgeInsets.only(top: 7),
  child: Stack(
    children: <Widget>[
      Positioned(
        left: 0,
        child: CircleAvatar(
          radius: radius,
          //    backgroundColor: Colors.red,
          backgroundImage: AssetImage(AssetImages.CHALLENGEPERSON1),
          backgroundColor: Colors
              .transparent, // Provide your custom image // Provide your custom image
        ),
      ),
      Positioned(
        left: 12,
        child: CircleAvatar(
          radius: radius,
          //   backgroundColor: Colors.red,
          backgroundImage: AssetImage(
              AssetImages.CHALLENGEPERSON1), // Provide your custom image
          backgroundColor:
              Colors.transparent, // Provide your custom image           \
        ),
      ),
      Positioned(
        left: 28,
        child: CircleAvatar(
          radius: radius,
          //  backgroundColor: Colors.red,
          backgroundImage: AssetImage(AssetImages.CHALLENGEPERSON1),
          backgroundColor: Colors.transparent, // Provide your custom image
        ),
      ),
      Positioned(
              left: 35,
              child: CircleAvatar(
                radius: radius - 5,
                //  backgroundColor: Colors.red,
                backgroundImage: AssetImage(AssetImages.ADDITIONAL),
                backgroundColor:
                    Colors.transparent, // Provide your custom image
              ),
            )
           ],
      ),

q9yhzks0

q9yhzks01#

您可以像这样创建此UI

import 'package:flutter/material.dart';

  class Home extends StatefulWidget {
    const Home({super.key});

    @override
    State<Home> createState() => _HomeState();
  }

  class _HomeState extends State<Home> {
    List imagesList = [//your images list];
    @override
    Widget build(BuildContext context) {
      return Scaffold(
        appBar: AppBar(),
        body: Center(
          child: Container(
            child: Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    for (int i = 0; i < imagesList.length; i++)
                      Container(
                        margin: EdgeInsets.symmetric(vertical: 0),
                        child: Align(
                            widthFactor: 0.5,
                            child: CircleAvatar(
                              radius: 50,
                              backgroundColor: Colors.white,
                              child: CircleAvatar(
                                radius: 40,
                                backgroundImage: NetworkImage(
                                  imagesList[i],
                                ),
                              ),
                            )),
                      )
                  ],
                ),
                SizedBox(
                  width: 20,
                ),
                CircleAvatar(
                  
                  backgroundColor: Colors.grey.shade200,
                  radius: 40,
                  child: Center(child: Icon(Icons.add)),
                ),
              ],
            ),
          ),
        ),
      );
    }
  }
mwkjh3gx

mwkjh3gx2#

尝试下面的代码我尝试你提供的图像,改变我的图像与你的图像

Container(
  padding: const EdgeInsets.all(8.0),
  height: 200.0,
   width: 500.0,
   child: Stack(
    children: <Widget>[
      Container(
        height: 50.0,
        width: 50.0,
        decoration: BoxDecoration(
          border: Border.all(),
          image: DecorationImage(
            image: NetworkImage(
              'https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png',
            ),
            fit: BoxFit.fill,
          ),
          shape: BoxShape.circle,
        ),
      ),
      Positioned(
        left: 40.0,
        child: Container(
          height: 50.0,
          width: 50.0,
          decoration: BoxDecoration(
            border: Border.all(),
            image: DecorationImage(
              image: NetworkImage(
                'https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png',
              ),
              fit: BoxFit.fill,
            ),
            shape: BoxShape.circle,
          ),
        ),
      ),
      Positioned(
        left: 80.0,
        child: Container(
          height: 50.0,
          width: 50.0,
          decoration: BoxDecoration(
            border: Border.all(),
            image: DecorationImage(
              image: NetworkImage(
                'https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png',
              ),
              fit: BoxFit.fill,
            ),
            shape: BoxShape.circle,
          ),
        ),
      ),
       Positioned(
        left: 120.0,
        child: Container(
          height: 50.0,
          width: 50.0,
          decoration: BoxDecoration(
            border: Border.all(),
           
            shape: BoxShape.circle,
          ),
          child: Icon(Icons.add,size: 40,),
        ),
      ),
    ],
  ),
),

结果-〉

相关问题