1
resposta

Como criar Background's Svg dentro do Flutter ?

Opa como vocês estão? Espero que bem,

Queria tirar uma dúvida, estou fazendo 1 projeto/estudo de flutter, a ideia é pegar o UI da semana front end que ta rolando aqui na alura ( Adopet ) e fazer no Flutter.

estou com dificuldade em fazer o background da seguinte screen:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Estou querendo fazer o background de cima (q tem uma forma e uma linha verde no top: 0). Me aventurei na webs em docs e artigos e encontrei uma forma de fazer que é usando Clipper da Class CustomClipper -> Artigo: https://medium.com/thebrand/bezier-animations-ui-elements-to-flutter-widgets-part-1-95c04b6ba1c4, consegui replicar só que tive um problema,

segue o print:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

(Deixei na cor creme pra ficar mais nitido), Repare que não tem a vazão entre o Shape e a linha, queria saber se alguem pode dar uma luz para como resolver isso. Abaixo o codigo:

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeeu Acredito que a cor está se aplicando a todo o "Container()" do Clip e não só a linha, só que não tenho ideia de como aplicar a cor exclusivamente na linha e deixar o restante "inherit" ou invisivel.

Vale ressaltar que esse foi o meio que consegui aplicar o background, se houverem outros que aplica resultado semelhante por favor compartilhem :D.

1 resposta

Olá, Cleverton! Como você está? Espero que esteja tudo bem!

Primeiramente, parabéns pelo seu projeto de estudo em Flutter e por estar se aventurando em replicar o UI da semana front end da Alura. É uma ótima maneira de aprender e praticar.

Sobre a sua dúvida em relação ao background da tela, entendo que você está utilizando a classe CustomClipper para criar a forma e a linha verde no topo. Pelo print que você compartilhou, parece que a cor está sendo aplicada em todo o Container do Clip, ao invés de ser aplicada apenas na linha.

Uma possível solução para aplicar a cor exclusivamente na linha é utilizar a classe Paint. Você pode criar um objeto Paint e definir a cor desejada nele. Em seguida, no método paint do seu CustomClipper, você pode utilizar o objeto Paint para desenhar a linha com a cor definida.

Aqui está um exemplo de como você pode fazer isso:

class MyCustomClipper extends CustomClipper<Path> {
  @override
  Path getClip(Size size) {
    Path path = Path();
    // Desenhe a forma desejada aqui

    return path;
  }

  @override
  bool shouldReclip(covariant CustomClipper<Path> oldClipper) {
    return false;
  }

  @override
  void paint(Canvas canvas, Size size) {
    Paint paint = Paint();
    paint.color = Colors.green; // Defina a cor desejada aqui

    // Desenhe a linha com a cor definida
    canvas.drawLine(
      Offset(0, 0), // Ponto inicial da linha
      Offset(size.width, 0), // Ponto final da linha
      paint,
    );
  }
}

Dessa forma, a cor definida será aplicada apenas na linha, enquanto o restante do Container do Clip ficará inalterado.

Espero que essa solução te ajude a resolver o problema! Se tiver mais alguma dúvida, é só perguntar. Estou aqui para ajudar!

Espero ter ajudado e bons estudos!