Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Android Studio - Post e Get não chegam no servidor json

Bom dia pessoal. Fiz o código identico ao apresentado, levantei o servidor, rodei os comandos de permissão da aula anterior. O servidor json roda normalmente, até quando eu abro ele pelo navegador aparece o registro do GET no log do terminal. Porém quando rodo o aplicativo ele não consegue fazer o POST e nem o GET. A única diferença que notei é que estou usando a IDE do Android Studio. Alguém mais passou por isso?

main.dart

import 'package:flutter/material.dart';
import 'package:flutter_webapi_first_course/services/journal_service.dart';
import 'package:google_fonts/google_fonts.dart';
import 'screens/home_screen/home_screen.dart';

void main() {
  print('Iniciando');
  runApp(const MyApp());
  JournalService service = JournalService();
  service.register("Olá mundo!");
  service.get();
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Simple Journal',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.grey,
        appBarTheme: const AppBarTheme(
          elevation: 0,
          backgroundColor: Colors.black,
          titleTextStyle: TextStyle(
            color: Colors.white,
          ),
        ),
        textTheme: GoogleFonts.bitterTextTheme()
      ),
      darkTheme: ThemeData.dark(),
      themeMode: ThemeMode.light,
      initialRoute: "home",
      routes: {
        "home": (context) => const HomeScreen(),
      },
    );
  }
}

journal_service.dart

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

class JournalService {
  static const String url = "http://192.168.XXX.XXX:3000/";
  static const String resource = "learnhttp/";

  String getURL() {
    return "$url$resource";
  }

  //TODO: Substituir getURL por getURI
  void register(String content) {
    http.post(Uri.parse(getURL()), body: {'content': content});
  }

  void get() async {
    http.Response response = await http.get(Uri.parse(getURL()));
    print(response.body);
  }
}

db.json

{
  "learnhttp" : {}
}

pubspec.yaml

name: flutter_webapi_first_course
description: Projeto do primeiro curso de WebAPI da Formação Flutter

publish_to: 'none'

version: 1.0.0+1

environment:
  sdk: ">=2.17.1 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^1.0.2
  uuid: ^3.0.6
  google_fonts: ^3.0.1
  http: ^0.13.4

dev_dependencies:
  flutter_test:
    sdk: flutter

  flutter_lints: ^2.0.0

flutter:

  uses-material-design: true
1 resposta
solução!

Já achei o problema, eu estava emulando diretamente em meu celular. Quando rodei uma imagem do device manager deu certo.