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