如何在flutter中添加这样的背景

khbbv19g  于 2023-02-05  发布在  Flutter
关注(0)|答案(3)|浏览(164)

我想添加的背景,有像下面的图片圆圈:

在我的图中,有这样的资产:

我的代码是这样的:

Widget buildArea(int index) => Card(
        color: ColorName.brandSecondaryBlue,
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(15),
        ),
        child: Container(
          padding: const EdgeInsets.only(top: 20, bottom: 20),
          child: buildAreaItem(),
        ),
      );

还有人知道怎么加吗?

5lwkijsr

5lwkijsr1#

可能不是一个干净的方式,但尝试使用Stack小部件和使用Positioned小部件内。
这里有一个你想要达到的目标的例子。

Scaffold(
        body: Center(
          child: Stack(
            children: [
              Container(
                width: 300,
                height: 150,
                decoration: BoxDecoration(
                  color: Colors.indigo,
                  borderRadius: BorderRadius.circular(20)
                ),
              ),
              
              Positioned(
                left: -50,
                top: -35,
                child: Stack(
                  alignment: AlignmentDirectional.center,
                  children:
                  [
                    Container(
                  width: 150,
                  height: 150,
                  decoration: BoxDecoration(
                      color: Colors.white,
                      borderRadius: BorderRadius.circular(100)
                  ),),
                    Container(
                      width: 100,
                      height: 100,
                      decoration: BoxDecoration(
                          color: Colors.indigo,
                          borderRadius: BorderRadius.circular(100)
                      ),),

                  ]
                ))
            ],
          ),
        )
      )
brccelvz

brccelvz2#

请尝试此代码:

import 'package:flutter/material.dart';
    import 'package:flutter/gestures.dart';
    import 'dart:ui';
    import 'package:google_fonts/google_fonts.dart';
    import 'package:myapp/utils.dart';
    
    class circlescreen extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        double baseWidth = 428;
        double fem = MediaQuery.of(context).size.width / baseWidth;
        double ffem = fem * 0.97;
        return Container(
          width: double.infinity,
          child: Container(
            // iphone13promax1auq (1:2)
            width: double.infinity,
            decoration: BoxDecoration (
              color: Color(0xff3241a0),
              borderRadius: BorderRadius.circular(20*fem),
            ),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.end,
              children: [
                Container(
                  // ellipse1hmV (1:4)
                  margin: EdgeInsets.fromLTRB(0*fem, 0*fem, 237*fem, 272*fem),
                  width: 318*fem,
                  height: 318*fem,
                  decoration: BoxDecoration (
                    borderRadius: BorderRadius.circular(159*fem),
                    border: Border.all(color: Color(0xff3c4baf)),
                  ),
                ),
                Container(
                  // ellipse3jCP (1:6)
                  margin: EdgeInsets.fromLTRB(0*fem, 0*fem, 0*fem, 113*fem),
                  width: 198*fem,
                  height: 198*fem,
                  decoration: BoxDecoration (
                    borderRadius: BorderRadius.circular(99*fem),
                    border: Border.all(color: Color(0xff3c4baf)),
                  ),
                ),
                Container(
                  // ellipse2oi3 (1:5)
                  margin: EdgeInsets.fromLTRB(0*fem, 0*fem, 205*fem, 0*fem),
                  width: 318*fem,
                  height: 318*fem,
                  decoration: BoxDecoration (
                    borderRadius: BorderRadius.circular(159*fem),
                    border: Border.all(color: Color(0xff3c4baf)),
                  ),
                ),
              ],
            ),
          ),
              );
      }
    }

n8ghc7c1

n8ghc7c13#

导出您的figma组件,仅使用背景(带圆圈的紫色)。
然后将其添加到assets中,并在Card的子节点中使用,因此小部件树将为:

Card 
=> 
Container( //with background decoration as image and necessary padding if any
)
 =>
 buildAreaItem()

您还可以裁剪图像以仅获得顶部的角环,或者使用DecorationImage小部件中的fit属性。

相关问题