/widgets/material.md

https://github.com/rubensdemelo/flutter-para-iniciantes · Markdown · 70 lines · 52 code · 18 blank · 0 comment · 0 complexity · 6c71135bf40e94d79f56ece6199eff5e MD5 · raw file

  1. ---
  2. description: Conjunto de widgets que seguem as definições de design do Material Design.
  3. ---
  4. # Material
  5. No [catálogo](https://flutter.dev/docs/development/ui/widgets/material) de widgets do Flutter, atualmente conta com quase 40 widgets prontos para uso. Desde um simples [botão](https://api.flutter.dev/flutter/material/RaisedButton-class.html) até widgets para estruturar todo o aplicativo, como o [Scaffold](https://api.flutter.dev/flutter/material/Scaffold-class.html).
  6. Navegando pelo catálogo, é possível identificar o que cada widget representa, porém listarei aqui os principais:
  7. [MaterialApp](https://api.flutter.dev/flutter/material/MaterialApp-class.html): Fornece uma estrutura completa para um aplicativo. Todas as rotas, opções de tema podem ser configuradas. Bem como a tela inicial. Ele será o widget raiz de um aplicativo.
  8. [Scaffold](https://api.flutter.dev/flutter/material/Scaffold-class.html): Para estruturar o layout de uma tela, este é o widget ideal. Neste podemos adicionar barras de navegação \(superior e inferior\), e na propriedade **body**, definimos o principal widget da nossa tela.
  9. [BottomNavigationBar](https://api.flutter.dev/flutter/material/BottomNavigationBar-class.html): Barra de navegação inferior, onde podemos adicionar ícones e textos das nossas telas.
  10. [AppBar](https://api.flutter.dev/flutter/material/AppBar-class.html): Barra superior, onde podemos colocar o título da nossa tela. O Flutter também utiliza este widget para exibir o ícone
  11. [Drawer](https://api.flutter.dev/flutter/material/Drawer-class.html): Menu lateral, que se abre após clicarmos em um ícone na [AppBar](https://api.flutter.dev/flutter/material/AppBar-class.html). Ao adicionarmos um [Drawer](https://api.flutter.dev/flutter/material/Drawer-class.html) ao [Scaffold](https://api.flutter.dev/flutter/material/Scaffold-class.html) e não adicionarmos uma [AppBar](https://api.flutter.dev/flutter/material/AppBar-class.html), o ícone para abrir o [Drawer](https://api.flutter.dev/flutter/material/Drawer-class.html) não é exibido.
  12. Veja o código de um aplicativo combinando todos estes widgets:
  13. ```dart
  14. import 'package:flutter/material.dart';
  15. void main() => runApp(MeuMaterialApp());
  16. class MeuMaterialApp extends StatelessWidget {
  17. @override
  18. Widget build(BuildContext context) {
  19. return MaterialApp(
  20. home: Scaffold(
  21. appBar: AppBar(
  22. title: Text('App Bar'),
  23. ),
  24. drawer: Drawer(),
  25. body: Center(
  26. child: Container(
  27. child: Text('Hello World'),
  28. ),
  29. ),
  30. bottomNavigationBar: BottomNavigationBar(
  31. items: [
  32. BottomNavigationBarItem(
  33. icon: Icon(Icons.home),
  34. title: Text('Home'),
  35. ),
  36. BottomNavigationBarItem(
  37. icon: Icon(Icons.settings),
  38. title: Text('Settings'),
  39. )
  40. ],
  41. ),
  42. ),
  43. );
  44. }
  45. }
  46. ```
  47. ![Aplicativo gerado pelo código acima](../.gitbook/assets/simulator-screen-shot-iphone-5s-2020-05-19-at-11.56.17.png)
  48. {% embed url="https://codepen.io/rubensdemelo/pen/yLYGyKE" %}
  49. Neste [vídeo](https://www.youtube.com/watch?v=DL0Ix1lnC4w), há uma demonstração de como utilizar os widgets da biblioteca [Material](https://api.flutter.dev/flutter/material/material-library.html) para construir um aplicativo com pouco mais de 100 linhas de código.
  50. {% hint style="info" %}
  51. Utilizando os widgets da biblioteca [Material](https://api.flutter.dev/flutter/material/material-library.html), nossa interface ficara muito parecida com um aplicativo Android nativo. E isso pode não ser agradável aos usuários do iOS. Felizmente, o Flutter possui um conjunto de widgets para que imitam o design de aplicativos nativos de iOS: a biblioteca [Cupertino](https://api.flutter.dev/flutter/cupertino/cupertino-library.html).
  52. {% endhint %}