Flutter Serverpod возвращает ошибку 400 в примере проекта

Я недавно изучаю Serverpod версии 0.9.21 в качестве своего бэкэнда, сначала я изменилClientадрес изhttp://localhost:8080/кhttp://10.0.2.2:8080/ИтакSocketExceptionна эмуляторе произошла ошибка, и теперь пример приложения (скажите привет) работает правильно. Проблема в том, что мой код сталкивается с ошибкой 400 безerrorMessage, Также я добавил таблицы и проверил базу данных, и все выглядит нормально.

После создания проекта я добавилProvinceПротокол внутри пакета test_server:

      class: Province
table: province
fields:
  name: String
  isEnabled: bool

Затем добавилprovince_endpoint:

      import 'package:serverpod/serverpod.dart';
import '../generated/protocol.dart';

class ProvinceEndpoint extends Endpoint {
  Future<bool> addProvince(Session session, Province province) async {
    await Province.insert(session, province);
    return true;
  }
}

Затем запуститеserverpod generateи запустите докер и сервер, как упоминается в учебниках.

И, наконец, test_fluttermain.dart:

      import 'package:back_client/back_client.dart';
import 'package:flutter/material.dart';
import 'package:serverpod_flutter/serverpod_flutter.dart';

var client = Client('http://10.0.2.2:8080/')
  ..connectivityMonitor = FlutterConnectivityMonitor();

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({Key? key}) : super(key: key);

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  final _nameController = TextEditingController(text: "name1");
  String result = "here";

  addProvince() async {
    final province = Province(name: _nameController.text, isEnabled: true);
    client.province.addProvince(province).then((value) {
      if (value) {
        setState(() {
          result = "Done adding ${_nameController.text} province";
        });
      } else {
        result = "Nashod!";
      }
    }).catchError((onError) {
      final error = (onError is ServerpodClientException)
          ? "${onError.message} ${onError.statusCode}"
          : "Error ";
      setState(() {
        result = error;
      });
    }).whenComplete(() {
      print("done");
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Column(
        children: [
          TextField(
            controller: _nameController,
          ),
          Text(
            result,
            style: Theme.of(context).textTheme.headline3,
          )
        ],
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: addProvinces,
        child: const Icon(Icons.add),
      ),
    );
  }
}

1 ответ

Я нуб в бэкенде, я не перезапускал докер и сервер после разработки конечной точки! Поскольку у флаттера есть горячая перезагрузка, это сделало меня немного ленивым! После разработки в терминале, на котором запущен serverpod, нажмитеCtrl + Cчтобы закрыть его процессы, затем запуститеdocker-compose up --build --detach && dart bin/main.dart

Другие вопросы по тегам