Как сделать прозрачный круг внутри цветного прямоугольника - PullRequest
1 голос
/ 19 июня 2020

Я новичок в флаттере. Я хочу сделать прозрачный круг сбоку полупрозрачным прямоугольником. Посмотрите, как показано ниже:

enter image description here

Я понятия не имею об этом. Так что, пожалуйста, помогите мне сделать этот виджет нестабильным.

1 Ответ

1 голос
/ 19 июня 2020

Используя ColorFiltered и Stack, вы можете добиться этого. (Я взял ответ, упомянутый в комментарии, и отредактировал его в соответствии с вашими потребностями)

enter image description here

@override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        fit: StackFit.expand,
        children: [
          Image.network(
            'https://lh3.googleusercontent.com/proxy/_wrP_GRGOkGw0FLMiR3qeMzlyC-qN8Dd4sND89_xxLZMDIZh204g8PCccS-o9WaL1RKyiVOLGVS9QpodSkMMhOh8kbNh1CY492197-im-4vlFRRdsVqT2g4QbRlNgljDIg',
            fit: BoxFit.cover,
          ), //Give your Image here
          ColorFiltered(
            colorFilter: ColorFilter.mode(
              Colors.black.withOpacity(0.5),
              BlendMode.srcOut,
            ), // This one will create the magic
            child: Stack(
              fit: StackFit.expand,
              children: [
                Container(
                  decoration: BoxDecoration(
                    color: Colors.black,
                    backgroundBlendMode: BlendMode.dstOut,
                  ), // This one will handle background + difference out
                ),
                Align(
                  alignment: Alignment.center,
                  child: Container(
                    height: MediaQuery.of(context).size.width,
                    width: MediaQuery.of(context).size.width,
                    decoration: BoxDecoration(
                      color: Colors.red,
                      borderRadius: BorderRadius.circular(
                        MediaQuery.of(context).size.width / 2,
                      ),
                    ),
                  ),
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }
...