Мне это надоело, но оно не работает так, как ожидалось, а также устали от других режимов, но не соответствует тому эффекту, который мне нужен.
Stack(
children: [
Container(
color: Colors.white,
height: 50,
width: 50,
),
SvgPicture.asset(
'assets/logo.svg',
ColorFilter.mode(Colors.white, BlendMode.difference),
)
],
)
Если ни один из ответов не помог, просто загрузите его в формате SVG и используйте.
@pskink ну, я устал от цветового фильтра, coorBlendMode с цветом ни один из них не работает
@Aks, братан, мне нужна динамика, потому что цвет и логотип будут меняться.
это как иметь белую коробку и черный логотип GitHub





Добавьте этот пакет: widget_mask. Этот пакет содержит класс SaveLayer, который мы можем использовать следующим образом ->
##Вы можете обрабатывать положение SVG по мере необходимости.
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:widget_mask/widget_mask.dart';
class BlendTest extends StatelessWidget {
const BlendTest({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black,
body: SafeArea(
child: Center(
child: SizedBox(
height: 150,
width: 150,
child: Stack(
children: [
Positioned(
top: 0,
left: 0,
child: Container(
height: 100,
width: 100,
color: Colors.white,
),
),
Positioned(
right: 0,
bottom: 0,
child: SaveLayer(
paint: Paint()..blendMode = BlendMode.difference,
child: SizedBox(
height: 100,
width: 100,
child: SvgPicture.asset(
"assets/github.svg",
// colorFilter: const ColorFilter.mode(Colors.white, BlendMode.srcIn),
)
)),
),
],
),
),
)),
);
}
}
Спасибо, это именно то, что мне нужно, если у меня по умолчанию нет белого логотипа, это не работает, поэтому нужно установить параметр цвета для svg на белый.
Что это значит? Например, у вас есть SVG красного цвета, и вы хотите изменить его на белый цвет? Можете ли вы добавить изображение того, чего вы хотите достичь? И если предложенное редактирование будет применено, оно не будет выглядеть как ваше эталонное изображение, поскольку вы не используете какую-либо позицию.
Обновил ответ, и вы можете попробовать раскомментировать «colorFilter» и проверить другие SVG-файлы.
посмотрите мой ответ, так как я не могу прикрепить изображение в комментарии, поэтому создал ответ, чтобы ответить на ваши вопросы.
Невозможно прикрепить эталонное изображение к комментарию, поэтому отвечая на вопрос @Aks здесь со ссылкой на изображение.
Если логотип не белый, как черный или красный, необходимо установить параметр цвета «Белый» или «SvgPicture.asset», как показано на изображении ниже. Исходный логотип был черным.
Что касается моего обновленного кода, эффект такой же, как при использовании @Aks SizedBox с отложенными виджетами, но я использую свойство выравнивания стека с дополнением в SVG.
Попытался ли ты? colorFilter внутри SvgPicture.asset().?
нет, еще нет.
пробовали поставить
colorFilter: ..., аcolorBlendMode: ...нет?