Flutter - Apresentando o Widget Card
No artigo de hoje vamos apresentar o widget Card do material design. |
|
O que é o Flutter ?
O Flutter é um SDK de aplicativo móvel do Google que ajuda a criar aplicativos móveis modernos para iOS e Android usando uma única (quase) base de código.
Se você não conhece o Flutter veja o meu artigo : Flutter - Primeiros contatos e impressões
Apresentando o widget Card
O Widget Card é um widget do Material Design e possui cantos ligeiramente arredondados e uma sombra. Geralmente este widget é usado para representar informações relacionados.
Vamos vê-lo em ação com um exemplo prático.
Crie um novo projeto Flutter no VS Code e no arquivo main.dart na pasta lib vamos iniciar definindo o código padrão usando o MaterialApp onde estamos desabilitando a label de Debug e definindo o Widget MyApp() no parâmetro home que é a porta de entrada da aplicação:
import 'package:flutter/material.dart';
void main(){
runApp( MaterialApp(
debugShowCheckedModeBanner: false,
home: MyApp(),
));
}
|
A seguir vamos criar o StatefulWidget MyApp() onde usamos o Scaffold definindo a AppBar, o título centralizado, a cor de fundo vermelha e em body definimos o método _body retornando um Container, mas a seguir vamos criar um Card:
Nota: Aqui também poderíamos ter criado um StatelessWidget.
class MyApp extends StatefulWidget {
@override
_State createState() => _State();
}
class _State extends State<MyApp>{
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Card - Exemplo'),
centerTitle : true,
backgroundColor: Colors.red,
),
body: _body(),
);
_body() {
return Container();
}
}
|
A seguir no método _body vamos definir um Container com preenchimento de 10 espaços em todos os lados, e, definir um Widget Column centralizado como filho.
A seguir vamos criar um Card bem simples que tem como filho um Container com preenchimento de 10 espaços e como filho um Widget Column onde temos dois widgets Text:
_body(){
return Container(
padding: EdgeInsets.all(10.0),
child: Center(
child: Column(
children: <Widget>[
Card(
child: Container(
padding: EdgeInsets.all(20.0),
child: Column(
children: <Widget>[
Text('Macoratti .net'),
Text('Quase tudo para .NET')
],
),
),
),
],
),
),
);
}
|
Temos assim um Card bem simples que exibe apenas texto; observe que o Card apresenta uma pequena elevação sombreada destacando-se no leiaute.
Vamos criar um outro Card agora exibindo uma imagem com texto:
_body(){
return Container(
padding: EdgeInsets.all(10.0),
child: Center(
child: Column(
children: <Widget>[
Card(
color: Colors.amber,
child: Container(
padding: EdgeInsets.all(32.0),
child: Column(
children: <Widget>[
Image.network(
"https://flutter.io/images/catalog-widget-placeholder.png"),
Divider(),
Text('Flutter - 2019')
],
),
),
),
],
),
),
);
}
|
Neste código usamos a argumento color do Card para destacar a cor no Card e empilhamos em um widget Column uma imagem e um texto. Para separar o texto da imagem usamos o widget Divider().
Vamos agora criar outro Card e incluir botões:
_body(){
return Container(
padding: EdgeInsets.all(10.0),
child: Center(
child: Column(
children: <Widget>[
Card(
color: Colors.grey[100],
child: Container(
padding: EdgeInsets.all(10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Image.network(
'https://flutter.io/images/catalog-widget-placeholder.png',
height: 150,width: 150),
Text(
"Flutter - 2019 - Macoratti.net quase tudo para .NET",
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(fontSize: 20),
),
Text(
"http://www.macoratti.net",
style: TextStyle(fontSize: 14),
),
ButtonTheme.bar(
child: ButtonBar(
children: <Widget>[
FlatButton(
child: const Text('DETALHES'),
onPressed: () { /* ... */ },
),
FlatButton(
child: const Text('SHARE'),
onPressed: () { /* ... */ },
),
],
)
)
]
),
),
),
],
),
),
);
}
|
Aqui cabe destacar o argumento color do Card onde definimos um cor cinza clara para destacar. Para criar os botões usamos o construtor ButtonTheme.bar que cria um tema de botão apropriado para barras de botões, conforme usado nos rodapés da caixa de diálogo e nos cabeçalhos das tabelas de dados.
A seguir definimos como filho o widget ButtonBar que posiciona os botões horizontalmente de acordo com o preenchimento no ButtonTheme atual. Como filhos deste widget temos dois FlatButton com Texto e também podemos implementar o callback onPressed().
Pegue o código dos arquivos dart usados no projeto aqui: main_card.dart
"Disse-lhes, pois, Jesus: Quando levantardes o Filho do homem, então conhecereis
que EU SOU, e que nada faço por mim mesmo; mas isto falo como meu Pai me
ensinou."
João 8:28
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
Flutter - Apresentando o widget MaterialApp - Macoratti
Flutter - Apresentando Flutter Studio - Macoratti
Flutter - Lista Básica - Macoratti
Flutter - Apresentando Widgets - Macoratti
Flutter - Obtendo dados da Web - Macoratti