1
resposta

Layout Grid com aplicação do DRY: Don't Repeat Yourself

Olá,

É muito comum aparecer código repetido a medida que o projeto cresce ou até mesmo quando temos componentes de layout com as mesmas características, pensando nisso a aplicação do DRY:

DRY é um princípio que recomenda evitar a duplicação de código, promovendo a reutilização por meio de abstrações, funções e componentes reutilizáveis. Ele está mais relacionado à manutenibilidade e clareza do código.

No desafio da aula enxerguei uma oportunidade para aplicação do DRY, segue o código abaixo:

ARQUIVO grid.dart

import 'package:flutter/material.dart';


_buildContainer({Color color = Colors.black}) {
  return Container(
    color: color,
    width: 120,
    height: 120,
  );
}

Column myGridLayout() {
  return Column(
    mainAxisAlignment: MainAxisAlignment.spaceEvenly,
    children: [
      Row(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        children: [
          _buildContainer(color: Colors.red),
          _buildContainer(color: Colors.orange),
          _buildContainer(color: Colors.amber)
        ],
      ),
      Row(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        children: [
          _buildContainer(color: Colors.green),
          _buildContainer(color: Colors.cyan),
          _buildContainer(color: Colors.blue)
        ],
      ),
      Row(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        children: [
          _buildContainer(color: Colors.purple),
          _buildContainer(color: Colors.pink),
          _buildContainer(color: Colors.white)
        ],
      )
    ],
  );
}

ARQUIVO main.dart

import 'package:flutter/material.dart';
import 'package:nosso_primeiro_projeto/grid.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: Container(
        color: Colors.black,
        child: myGridLayout(),
      ),
    );
  }
}
1 resposta

Olá João!

Muito legal ver que você está pensando em aplicar o princípio DRY no seu projeto Flutter! Realmente, evitar a repetição de código é uma prática essencial para manter o código limpo e fácil de manter.

Bacana, que você já está no caminho certo ao criar uma função _buildContainer para gerar os Containers com cores diferentes. Isso já reduz a repetição, pois você não precisa definir o tamanho e a cor do Container repetidamente, mandou bem!

Isso torna o código mais flexível e fácil de manter, pois você pode simplesmente adicionar ou remover cores da lista sem precisar alterar o layout.

Continue assim, praticando e sempre evoluindo!

Bons estudos!

Sucesso

Um grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!