flutter/flutter-handling-http-and-json

Executa requisições HTTP e lida com serialização JSON em um aplicativo Flutter. Use ao integrar com APIs REST ou analisar dados estruturados de fontes externas.

O que é flutter-handling-http-and-json?

Esta skill capacita o agente a fazer requisições HTTP e gerenciar serialização/desserialização JSON dentro de um aplicativo Flutter. É útil ao integrar com APIs REST, buscar dados de servidores web ou processar respostas JSON estruturadas. A skill se baseia no pacote `http` do Flutter e nas bibliotecas `dart:convert` para converter entre JSON e objetos Dart, fornecendo um padrão robusto para comunicação com serviços externos. Ela suporta a criação de classes de modelo, gerenciamento de erros e tratamento de requisições assíncronas, sendo essencial para desenvolvedores que precisam implementar lógica de rede de forma confiável e eficiente em seus aplicativos Flutter.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/flutter/skills/tree/main/skills/flutter-handling-http-and-json

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que flutter-handling-http-and-json faz?

Executa requisições HTTP e lida com serialização JSON em um aplicativo Flutter. Use ao integrar com APIs REST ou analisar dados estruturados de fontes externas.

Visão Geral

Esta skill fornece as melhores práticas para realizar requisições HTTP e processar JSON em Flutter. Ela cobre:

  • Utilização do pacote http para requisições HTTP.
  • Desserialização de JSON para objetos Dart.
  • Serialização de objetos Dart para JSON.
  • Tratamento de erros e códigos de status HTTP.
  • Gerenciamento de requisições assíncronas.

Pré-requisitos

  • Pacote http adicionado ao arquivo pubspec.yaml
  • Conhecimento básico de async/await em Dart

Utilização

Importações

import 'dart:convert';
import 'package:http/http.dart' as http;

Realizando uma Requisição GET

Future<Map<String, dynamic>> fetchData(String url) async {
  final response = await http.get(Uri.parse(url));

  if (response.statusCode == 200) {
    return jsonDecode(response.body);
  } else {
    throw Exception('Falha ao carregar dados: ${response.statusCode}');
  }
}

Realizando uma Requisição POST

Future<Map<String, dynamic>> postData(String url, Map<String, dynamic> data) async {
  final response = await http.post(
    Uri.parse(url),
    headers: {'Content-Type': 'application/json'},
    body: jsonEncode(data),
  );

  if (response.statusCode == 200 || response.statusCode == 201) {
    return jsonDecode(response.body);
  } else {
    throw Exception('Falha ao enviar dados: ${response.statusCode}');
  }
}

Criando Modelos para Dados JSON

class Usuario {
  final int id;
  final String nome;
  final String email;

  Usuario({required this.id, required this.nome, required this.email});

  factory Usuario.fromJson(Map<String, dynamic> json) {
    return Usuario(
      id: json['id'],
      nome: json['nome'],
      email: json['email'],
    );
  }

  Map<String, dynamic> toJson() {
    return {
      'id': id,
      'nome': nome,
      'email': email,
    };
  }
}

Tratamento de Erros

Sempre envolva as requisições de rede em blocos try-catch para lidar com possíveis exceções:

try {
  final dados = await fetchData('https://api.exemplo.com/dados');
  print(dados);
} catch (e) {
  print('Erro: $e');
}

Considerações Finais

  • Sempre valide a resposta HTTP antes de processar o JSON.
  • Use jsonDecode e jsonEncode para conversão de JSON.
  • Crie classes de modelo para representar dados estruturados.
  • Gerencie requisições assíncronas com async/await para evitar bloquear a interface do usuário.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

flutter/flutter-accessibility

Configure your Flutter app to support assistive technologies like Screen Readers

flutter/flutter-accessibility-audit

Triggers an accessibility scan through the widget_inspector and automatically adds Semantics widgets or missing labels to the source code.

flutter/flutter-adding-home-screen-widgets

Adds home screen widgets to a Flutter app for Android and iOS. Use when providing glanceable app information or quick actions on the device home screen.

flutter/flutter-add-integration-test

Configures Flutter Driver for app interaction and converts MCP actions into permanent integration tests. Use when adding integration testing to a project, exploring UI components via MCP, or automating user flows with the integration_test package.

flutter/flutter-add-widget-preview

Adds interactive widget previews to the project using the previews.dart system. Use when creating new UI components or updating existing screens to ensure consistent design and interactive testing.

flutter/flutter-add-widget-test

Implement a component-level test using `WidgetTester` to verify UI rendering and user interactions (tapping, scrolling, entering text). Use when validating that a specific widget displays correct data and responds to events as expected.

flutter/flutter-animating-apps

Implements animated effects, transitions, and motion in a Flutter app. Use when adding visual feedback, shared element transitions, or physics-based animations.

flutter/flutter-animation

Add animated effects to your Flutter app

flutter/flutter-apply-architecture-best-practices

Architects a Flutter application using the recommended layered approach (UI, Logic, Data). Use when structuring a new project or refactoring for scalability.

flutter/flutter-app-size

Measure and reduce the size of the Flutter app bundle, APK, or IPA

flutter/flutter-architecting-apps

Architects a Flutter application using the recommended layered approach (UI, Logic, Data). Use when structuring a new project or refactoring for scalability.

flutter/flutter-architecture

Use the Flutter team's recommended app architecture

flutter/flutter-building-forms

Builds Flutter forms with validation and user input handling. Use when creating login screens, data entry forms, or any multi-field user input.

flutter/flutter-building-layouts

Builds Flutter layouts using the constraint system and layout widgets. Use when creating or refining the UI structure of a Flutter application.

flutter/flutter-building-plugins

Builds Flutter plugins that provide native interop for other apps to use. Use when creating reusable packages that bridge Flutter with platform-specific functionality.

flutter/flutter-build-responsive-layout

Use `LayoutBuilder`, `MediaQuery`, or `Expanded/Flexible` to create a layout that adapts to different screen sizes. Use when you need the UI to look good on both mobile and tablet/desktop form factors.

flutter/flutter-caching

Cache data in a Flutter app

flutter/flutter-caching-data

Implements caching strategies for Flutter apps to improve performance and offline support. Use when retaining app data locally to reduce network requests or speed up startup.

flutter/flutter-concurrency

Execute long-running tasks in a background thread in Flutter

flutter/flutter-databases

Work with databases in a Flutter app

Habilidades Relacionadas