Flutter - Usando GestureDetector
Hoje veremos como usar a classe GestureDetector para implementar gestos personalizados no Flutter. |
|
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
Gestures
Estou traduzindo Gestures como Gestos, mas, na verdade os gestos incluem a ação de tocar, pressionar, arrastar e redimencionar objetos na tela do dispositivo.
Os gestos são uma forma do usuário interagir com um aplicativo móvel (ou qualquer dispositivo baseado em toque)e são definidos como qualquer ação/movimento físico de um usuário com a intenção de ativar um controle específico do dispositivo móvel.
Segundo a documentação, no Flutter, o sistema de gestos possui duas camadas separadas.
Assim os Gestos representam ações semânticas (tocar, arrastar, dimensionar) que são reconhecidas a partir de vários eventos de ponteiros individuais, e potencialmente até de vários ponteiros individuais.
Para poder ouvir esses gestos a partir da camada de widgets, geralmente usamos a classe GestureDetector.
O
GestureDetector é um widget não visual usado
principalmente para detectar o gesto do usuário. Para identificar um gesto
direcionado a um widget, o widget pode ser colocado dentro do widget
GestureDetector o qual irá irá capturar o gesto e
despachar vários eventos com base no gesto.
Se você estiver usando componentes do Material Design
, muitos desses widgets já respondem a toques ou gestos. Por exemplo,
IconButton e FlatButton respondem a pressionamentos (toques) e o
ListView responde ao deslize para acionar a rolagem.
Geralmente os gestos mais usados são:
A seguir temos uma lista de gestos e os eventos correspondentes mais usados no Flutter:
Vamos então mostrar na prática como usar esse recurso.
recursos usados:
Criando Gestos personalizados
Para começar vamos aprender como podemos usar esses gestos em um aplicativo com um simples evento onTap() e determinar como o GestureDetector processa isso.
Aqui, vamos criar uma caixa usando o widget Container, e projetá-la de acordo com a especificação desejada e a seguir adicionar a função onTap() ao widget
A primeira coisa a fazer é criar um projeto Flutter chamado flut_gesture1:
No Visual Studio Code
tecle CTRL+ SHIFT+P para abrir a paleta de
comandos e a seguir selecione a opção : Fluter:New
Project; A seguir informe o nome do projeto : flut_anima1 e tecle ENTER; Na janela de diálogo a seguir selecione uma pasta local onde o projeto vai ser salvo e clique em : Select a folder to create the project in; O Flutter vai criar um projeto padrão onde todo o código da aplicação vai estar no arquivo main.dart dentro da pasta lib do projeto; |
A seguir vamos criar uma definir o código abaixo no arquivo main.dart:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter GestureDetector', theme: ThemeData(
primarySwatch: Colors.green,),
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
@override
HomePageState createState() => new HomePageState();
}
class HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Gestures Exemplo'),
centerTitle: true,
),
body: Center(child: GestureDetector(
onTap: () {
print('A caixa foi Clicada');
},
child: Container(
height: 60.0,
width: 120.0,
padding: EdgeInsets.all(10.0),
decoration: BoxDecoration(
color: Colors.cyan,
borderRadius: BorderRadius.circular(15.0),
),
child: Center(child: Text('Clique Aqui')),
)
)),
);
}
}
|
Abaixo vemos o resultado da execução do projeto após o botão ser clicado alguma vezes:
No projeto em execução cima vemos um botão com bordas arredondadas no centro da tela. Quando você tocar na caixa, ela vai se comportar como um botão e o evento onTap() definido vai imprimir a o texto no console.
Tudo isso porque definimos o widget GestureDetector() para escutar o toque do usuário.
Pegue o código do projeto aqui: main_gesturedetector.txt
"Ai dos que
ajuntam casa a casa, reúnem campo a campo, até que não haja mais lugar, e fiquem
como únicos moradores no meio da terra!"
Isaías 5:8
Referências:
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