Ir para conteúdo
Fluttership
  • Cadastre-se

Todas Atividades

This stream auto-updates     

  1. Earlier
  2. Não tem nada na minha mente.

  3. Alex Castro

    Flutter v1.8.3

    Atualização referente as funções assíncronas #34545 In order to keep errors from getting inadvertently swallowed in FutureBuilder and StreamBuilder, the following changes were made to those APIs (announcement😞 AsyncSnapshot.data now throws an error if AsyncSnapshot.hasData is false. Callers can guard against this by consulting AsyncSnapshot.hasData before accessing the data property: Before builder: (BuildContext context, AsyncSnapshot<String> snapshot) { String data = snapshot.data ?? 'default_value'; ... }, After builder: (BuildContext context, AsyncSnapshot snapshot) { String data = snapshot.hasData ? snapshot.data : 'default_value'; ... }, AsyncSnapshot.requireData was removed. Callers who are using this can update their code by accessing AsyncSnapshot.data instead, which now behaves the way that requireDatadid. The initialData argument to the StreamBuilder() constructor is now a required argument. Callers who do not wish to pass initial data may use the newly added StreamBuilder.withoutInitialData() constructor. This should go in tandem with a change that checks for snapshot.hasData in your builder method: Before return StreamBuilder<String>( stream: myStream, builder: (BuildContext context, AsyncSnapshot<String> snapshot) { return Text(snapshot.data ?? 'default_value'); }, ); After return StreamBuilder<String>.withoutInitialData( stream: someStream, builder: (BuildContext context, AsyncSnapshot<String> snapshot) { return Text(snapshot.hasData ? snapshot.data : 'default_value'); }, ); The initialData argument to the FutureBuilder() constructor is now deprecated and will be removed in a future release. Callers who are using FutureBuilder.initialDatashould instead check the snapshot's connection state in their builder method: Before return FutureBuilder<String>( future: someFuture, initialData: 'initial_value', builder: (BuildContext context, AsyncSnapshot<String> snapshot) { return Text(snapshot.data); }, ); After return FutureBuilder<String>( future: someFuture, builder: (BuildContext context, AsyncSnapshot<String> snapshot) { return Text(snapshot.connectionState == ConnectionState.done ? snapshot.data : 'initial_value'); }, ); Fonte: https://github.com/flutter/flutter/wiki/Changelog
  4. Vaga para desenvolvimento mobile ( Pode ser em qualquer linguagem, desde que tenha um app desenvolvido para demonstrar ) Empresa: http://culte.com.br/ falar com Cris Sutil Contato: 11 98135-7721
  5. O future builder retonar o estado da conexão, mas e se você tiver com os dados móveis ligado, mas sem créditos??? E se quiser retornar dados de acordo com o wifi e dados móveis para economizar banda? Então, use connectivity: connectivity: ^0.4.2 Mão na massa: // Importing Flutter Package import 'package:connectivity/connectivity.dart'; var connectivityResult = await (Connectivity().checkConnectivity()); if (connectivityResult == ConnectivityResult.mobile) { print("Connected to Mobile Network"); } else if (connectivityResult == ConnectivityResult.wifi) { print("Connected to WiFi"); } else { print("Unable to connect. Please Check Internet Connection"); } Ou você pode ser notificado caso o estado da conexão for alterado // Importing Flutter Package import 'package:connectivity/connectivity.dart'; initState() { subscription = Connectivity().onConnectivityChanged.listen((ConnectivityResult result) { print("Connection Status has Changed"); }) } dispose() { subscription.cancel(); } É isso aí galera!! Bom código Fonte: https://www.codemeals.com/flutter/network-connectivity-flutter/
  6. Alex Castro

    [RN] Vaga flutter

    Repassando...
  7. Olá pessoal, estamos muito contente em anunciar que finalmente inauguramos “Flutter Arsenal”. Flutter arsenal é um open source focado em criar uma série de ferramentas para flutter. Ele também vai ajudar em ajudar todos desenvolvedores em flutter a criar aplicativos para android e iOS com mais simplicidade e facilidade! Confira lá no nosso site: https://flutterarsenal.com E claro não esqueça de favoritar sua arma no arsenal flutter, clicando em “contribuir” logo no menu que aparece na opção da postagem e clicando no botão do github. Nos dê seu feedback e comente lá. Obs: nosso site ainda não está responsivo, mas estamos trabalhando nisso. Texto original: Hello People, I am excited to announce that we have finally launched Flutter Arsenal. Flutter Arsenal is an open source effort to create a categorized directory of libraries and tools for Flutter. This will help all the Flutter Developers to build cross-platform apps with more ease and comfort. Check it out here => https://flutterarsenal.com And yes don't forget to add your favourite Flutter Weapon to Flutter Arsenal by just clicking on "Contribute" option in the primary menu bar and then clicking the "Submit via Github" button. Provide your valuable feedback in the comments section. P.S. The website is not responsive yet but will be in the near future.
  8. Muito bom!! Esse ja ouvi falar, uma boa fica também é o https://flutterstudio.app/ xD
  9. Ótimo material. Os materiais em inglês são ótimos! vou tentar trazer uns em português também. Otima iniciativa!
  10. Pessoal, no link abaixo tem diversas referências sobre Flutter. Desde releases do framework até exemplos para uso no seu app. Por exemplo, se precisa de um Widget ou um exemplo de como fazer algo, busque lá que é provável que tenha. https://flutterx.com/
  11. felipebhz

    Artigo sobre Bloc (em inglês)

    Pessoal, encontrei esse artigo que explica sobre o padrão Bloc. Alguns tópicos: What is BLoC Pattern? Why BLoC? When to use BLoC? and, How to implement BLoC? Link: https://medium.com/flutterdevs/bloc-pattern-in-flutter-part-1-flutterdevs-128f90059f5c
  12. Alex Castro

    Dispose

    - Dispose - Usado quando você tem um objeto que não irá mais utilizar da árvore de chamadas permanentemente. Exemplo: Você cria um controller usado no animatedContainer, no login por exemplo, e você não irá usar mais esta animação permanentemente enquanto estiver logado, você precisa usar o dispose, para não ocorrer erros. Por exemplo: flutter: The following assertion was thrown while finalizing the widget tree: flutter: PimpedButtonState#0c8cd(ticker active) was disposed with an active Ticker. flutter: PimpedButtonState created a Ticker via its SingleTickerProviderStateMixin, but at the time dispose() flutter: was called on the mixin, that Ticker was still active. The Ticker must be disposed before calling flutter: super.dispose(). Tickers used by AnimationControllers should be disposed by calling dispose() on the flutter: AnimationController itself. Otherwise, the ticker will leak. então usamos @override void dispose() { logoController.dispose(); controller.dispose(); super.dispose(); } no caso, o controller usado na sua animação. Fonte: https://api.flutter.dev/flutter/widgets/State/dispose.html
  13. Fala Devs!!! Uma experiência que tive, referente ao uso armazenagem de dados, foi usar o flutter secure storage. Quando na empresa onde trabalho, eu estava fazendo armazenagem de dados, como Token, UserId ( Básico da autenticação em JWT ), o plugin Shared Preferences. Ele funcionava, mas notei um pequeno erro. Quando eu fazia o primeiro login, via ADB Shell, eu via que ele salvava um XML com esses tal dados, e quando eu removia, usando clear e remove, ele dava null, no console, mas quando eu dava hot reload, os dados voltavam !! Uma coisa que em produção não dava problema, mas o que me preocupou foi o fato do xml persistir com os mesmos dados. O funcionamento dele é parecido com o session do PHP, onde armazena localmente tais dados, porém continuei tendo o mesmo problema, onde optei usar o Flutter Secure Storage. https://github.com/mogol/flutter_secure_storage https://pub.dev/documentation/flutter_secure_storage/latest/ Ele é simplesmente perfeito, funcional e simples. Ainda mais para dados sensiveis, como estes... Não optei pelo SQLite, por motivos óbvios, não guardo dados em quantidade que necessite essa migração. Bom, fica a dica aí pra quem tem ou teve problemas com dados, e quem ainda não passou, e quem tem outras experiência, diga ai!
  14. Alex Castro

    Curso Flutter

    Fala devs! Trabalho no Rio de Janeiro como dev web FS, e a empresa onde eu trabalho precisava de um App. Fiz este curso, e com dedicação, estamos nas etapas finais do nosso App. Super indico este material!! Criação de Apps Android e iOS com Flutter https://www.udemy.com/curso-completo-flutter-app-android-ios/
  15. Alex Castro

    Criar um contador do Zero

    Vamos começar, apagando tudo do arquivo: main.dart lib/main.dart é onde é colocado o seu código dart Começamos pela função principal do dart void main() { } Usando função runApp, iremos dizer o que irá executar no nosso dispositivo android / iOS. void main() { runApp(); } Dentro do runApp, vamos chamar o Material do Dart (parece um pouco jQuery, quando faz uma função callback. void main() { runApp( new MaterialApp( title: 'Primeiro Projeto', home: Container(color: Colors.black45), ) ); } O materialApp é uma Classe do dart que define alguns componentes de estilização do App. Não sendo obrigatório usá-lo. (https://flutter.dev/docs/development/ui/widgets-intro), Mas no próximo artigo será util já usá-lo, para criar a parte UI do App. para usar este widget, de acordo com a documentação, você deve importa-los: import 'package:flutter/material.dart'; void main() { runApp( new MaterialApp( title: 'Primeiro Projeto', ) ); } Como é nosso App é simples, vamos colocar o container dentro do materialApp mesmo. Vamos usar mainAxisAlignment, pra alinha nosso texto no centro da tela: void main() { runApp( new MaterialApp( title: 'Primeiro Projeto', home: Column( mainAxisAlignment: MainAxisAlignment.center, ) ) ); } e dentro do home, colocar nosso container, com o nosso Texto. void main() { runApp( new MaterialApp( title: 'Primeiro Projeto', home: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( "Contador: 0", style: TextStyle(color: Colors.white), ) ], ) ) ); } Podemos ver nosso App neste estado, agora podemos criar o botão para acrescentar este valor. Neste exemplo, iremos criar um botão Flatbutton, que é uma classe do Dart( https://api.flutter.dev/flutter/material/FlatButton-class.html) child: Damos um texto para o botão com a const Text. color: Cor do fundo do botão splashColor: é a cor da animação quando é clicado no botão. ( no css, usa :active) onPressed: é a ação do botão. Antes de fazer nosso botão funcionar, é bom lembrar de uma nota: Widget Stateful são classes que podem ser alteradas, conforme for interagindo com o App. e Stateless, é exatamente o oposto. Widgets que são sempre aquilo, não é alterado. Mas vamos aprender na prática: Vamos criar a Classe Home: class Home extends StatefulWidget { @override _HomeState createState() => _HomeState(); } class _HomeState extends State<Home> { @override Widget build(BuildContext context) { return Container(); } } Esse build é exatamente para podermos alterar o status do nosso contador (ou do layout) Vamos colocar nosso container que está em home lá de cima e colocar no return da classe HomeState, e chamar essa classe dentro do nosso runApp: import 'package:flutter/material.dart'; void main() { runApp( new MaterialApp( title: 'Primeiro Projeto', home: Home(), ) ); } class Home extends StatefulWidget { @override _HomeState createState() => _HomeState(); } class _HomeState extends State<Home> { int contagem = 0; @override Widget build(BuildContext context) { return Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( "Contador: $contagem", style: TextStyle(color: Colors.white), ), FlatButton( child: const Text('Somar'), color: Colors.white, splashColor: Colors.black12, onPressed: () { setState(() { contagem++; }); }, ), ], ); } } Deste Modo, temos uma idéia do como é feito a interação do botão com a aplicação. Link do projeto: https://github.com/AlexcastroDev/contador/ Gostou ? Compartilhe! Teve algum ponto que precisou de ser mais claro? Dê seu feedback para que eu possa preparar conteúdo melhores para a comunidade.
  1. Load more activity
×
×
  • Criar Novo...