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(),
),
);
}
}