Similar to TensorFlow I will not translate, because those are only outdated notes from a code I can’t access anymore, but different from TensorFlow I want to return my studies with Flutter
Algo privado
Para algo que vai ser apenas usado naquele cara. Exemplo a baixo eu apenas posso usar o widget privado dentro da lib. (ou seja, no outro widget) e as variáveis privadas apenas posso usar dentro do widget/funcão que foi declarada:
import 'package:flutter/material.dart'; import './question.dart'; import 'answers.dart'; void main() => runApp(MyApp()); class MyApp extends StatefulWidget { @override State<StatefulWidget> createState() { return _MyAppState(); } } class _MyAppState extends State<MyApp> { var _questionIndex = 0; void _answerQuestion() { setState(() { _questionIndex = _questionIndex + 1; }); print(_questionIndex); } @override Widget build(BuildContext context) { var questions = [ { 'questionText': 'What\'s your favorite color?', 'answers': ['Black', 'Red', 'Green', 'White'], }, { 'questionText': 'What\'s your favorite animal?', 'answers': ['Rabbit', 'Snake', 'Elephant', 'Lion'], }, { 'questionText': 'Who\'s your favorite instructor?', 'answers': ['Max', 'Max', 'Max', 'Max'], }, ]; return MaterialApp( home: Scaffold( appBar: AppBar( title: Text('My First App'), ), body: Column( children: [ Question( questions[_questionIndex]['questionText'], ), ...(questions[_questionIndex]['answers'] as List<String>) .map((answer) { return Answer(_answerQuestion, answer); }).toList() ], ), ), ); } }
Const vs Final
- const é que não muda em runtime - usado para declarar as var. que não mudam
- final é que não muda em tempo de copilação - usado para declarar os parametro de um widget:
class Question extends StatelessWidget { final String questionText; Question(this.questionText); @override Widget build(BuildContext context) { return Container( width: double.infinity, margin: EdgeInsets.all(10), child: Text( questionText, style: TextStyle(fontSize: 28), textAlign: TextAlign.center, )); } }
@required
Para um parâmetro ser obrigatório em uma Widget, precisa do required
class Question extends StatelessWidget { final String questionText; Question(@required this.questionText); @override Widget build(BuildContext context) { return Container( width: double.infinity, margin: EdgeInsets.all(10), child: Text( questionText, style: TextStyle(fontSize: 28), textAlign: TextAlign.center, )); } }
Metodo get
Usado para retornar variaveis com valores dínamico
String get resultPhase { if(true) { return 'Frase 01' } return 'Frase 00' }
Dart Devtools e debug
Nele tem algumas coisas tunadas, como mostrar cada fatia do aplicativo e performance dele.
Adaptive vs Responsive
Adaptativo é quando tu faz para iOS e Android. Tem que se adaptar com a plataforma.
Responsivo é o cara ter diferente resolução e tamanho de tela e poder usar em horizontal ou vertical o aplicativo
![notion image](/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252Fe1f136f6-d968-4ba4-a125-0f3751a3a11d%252FUntitled.png%3Ftable%3Dblock%26id%3D12447e46-bfad-4634-807d-bc377394e9dd%26cache%3Dv2&w=3840&q=75)
Trabalhando com responsividade
Na imagem a baixo, eu sou deixando o Widget com 20% da altura da tela do usuário
![notion image](/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F57dde44c-e11e-439b-a374-83694058bc55%252FUntitled.png%3Ftable%3Dblock%26id%3D61ec3c75-2872-4933-8c39-5fa15d9f072c%26cache%3Dv2&w=3840&q=75)
#### Contorando o app bar
Você joga o Appbar (navbar) para uma variavel e passa como contexto para os filhos:
![notion image](/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F41670c52-54e0-4ed1-8b77-60c34955d03b%252FUntitled.png%3Ftable%3Dblock%26id%3D247bcacd-16d1-4dd3-b6d1-5d440f43f2ec%26cache%3Dv2&w=3840&q=75)
Porém o padding pode ser necessário:
![notion image](/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F4cc5e78d-f4fb-4e01-9f3d-041991a424f7%252FUntitled.png%3Ftable%3Dblock%26id%3Dfceb14e0-727d-4ae9-9f93-45b324ee8706%26cache%3Dv2&w=3840&q=75)
Agora quando você passar o número da altura para algum Container filho, ele vai dar 60% de (100% menos altura do navbar)
Meu primeiro MVP
Figma:
![notion image](/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F083000b2-6597-4d9a-b54c-f3927f477bbe%252FUntitled.png%3Ftable%3Dblock%26id%3D734420dd-c580-491d-b420-cc4cf7461c92%26cache%3Dv2&w=3840&q=75)
![notion image](/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F4a8ec0e3-cdb2-4655-8ff7-4c16c16e38a6%252FScreenshot_2020-06-03_17-56-42.png%3Ftable%3Dblock%26id%3D4c5c5d69-d6f9-466a-ba7e-4869da3af945%26cache%3Dv2&w=3840&q=75)