Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro função register

A informação não esta sendo registrada no arquivo db.json. Já testei as soluções apresentas em diversos tópicos aqui do forum, mas mesmo assim não deram certo.

No começo esta tendo o erro de "SyntaxError: Unexpected token 'c', "content=Ol"... is not valid JSON", esse erro parou e acontecer depois que adicionei "headers: {'Content-Type': 'application/json'}" na minha função 'register'. Agora, mesmo não dando erro nenhum, a informação "Olá mundo!" não fica registrada.

main.dart

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

void main() {
  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.15.71:3000/";
  static const String resource = "learnhttp/";

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

  void register(String content) {
    http.post(
        Uri.parse(getURL()),
        headers: {'Content-Type': 'application/json'},
        body: {'content': content});
  }

  Future<String> get() async {
    http.Response response = await http.get(Uri.parse(getURL()));
    print(response.body);
    return response.body;
  }
}
2 respostas

Já testou essa solução dada pelo instrutor? https://cursos.alura.com.br/forum/topico-bug-nao-funciona-funcao-register-426721

solução!

Testei, mas infelizmente não resolveu. Não aparece nenhuma mensagem de erro nem alerta.

Eu consegui resolver trocando de POST para PUT, assim começou a gravar a informação corretamente.