Как я могу раскрасить половину моего CircleAvatar одним цветом, а другую половину другим в flutter

#android #ios #flutter #dart

#Android #iOS #flutter #dart

Вопрос:

Я хочу покрасить половину моего аватара в темно-синий цвет, а другую половину — в светло-голубой. Я имею в виду ровно половину. Как я могу этого добиться?

Точно так же, как они —

введите описание изображения здесь

Я пробовал это, но это не сработало —

 Container(
          decoration: BoxDecoration(
            shape: BoxShape.circle,
            gradient: LinearGradient(
              begin: Alignment.topCenter,
              end: Alignment.bottomCenter,
              colors: [
                Color(0xFF040663),
                Color(0xFF434599),
              ],
            ),
          ),
          child: CircleAvatar(
            backgroundColor: Colors.transparent,
            radius: MediaQuery.of(context).size.height*0.045,
            child: Icon(
              icon,
              size: size,
              color: Colors.white,
            ),
          ),
        ),
 

Может кто-нибудь сказать мне, как я могу отредактировать этот код или подсказать мне новый способ добиться этого?

Ответ №1:

Вы почти на месте. Вам нужно повторить цвет в градиенте и использовать свойство stops, чтобы получить резкий градиент.

 return Container(
      padding: const EdgeInsets.all(8.0),
      decoration: BoxDecoration(
        shape: BoxShape.circle,
        gradient: LinearGradient(
          begin: Alignment.topCenter,
          end: Alignment.bottomCenter,
          colors: [
            Colors.purple,
            Colors.purple,
            Colors.blue,
          ],
          stops: [
            0, 0.5, 0.5
          ]
        ),
      ),
      child: Icon(
        Icons.camera,
        size: 32,
        color: Colors.white,
      ),
    );
 

Вот результат:

Результат

Для получения дополнительной информации обратитесь к документации по свойствам stops: https://api.flutter.dev/flutter/painting/Gradient/stops.html