You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter中使用Retrofit实现Java后端用户保存接口调用?

在Flutter中使用Retrofit调用用户保存接口的实现步骤

1. 添加依赖

在项目的pubspec.yaml中引入所需依赖及代码生成工具:

dependencies:
  flutter:
    sdk: flutter
  retrofit: ^4.0.1  # 可替换为最新稳定版本
  dio: ^5.3.2
  json_annotation: ^4.8.1

dev_dependencies:
  flutter_test:
    sdk: flutter
  retrofit_generator: ^8.0.4
  build_runner: ^2.4.4
  json_serializable: ^6.7.0

2. 定义User实体类

对应后端的User实体,通过json_serializable实现序列化/反序列化:

import 'package:json_annotation/json_annotation.dart';

part 'user.g.dart';

@JsonSerializable()
class User {
  // 字段需与后端User类完全匹配,示例字段如下
  final String? userId;
  final String username;
  final String email;
  // 按需添加其他字段,如password、createTime等

  User({this.userId, required this.username, required this.email});

  factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
  Map<String, dynamic> toJson() => _$UserToJson(this);
}

3. 编写Retrofit API接口

定义与后端/save接口对应的POST请求方法:

import 'package:retrofit/retrofit.dart';
import 'package:dio/dio.dart';
import 'user.dart';

part 'user_api.g.dart';

@RestApi(baseUrl: "http://你的后端服务地址/") // 替换为实际后端域名/IP
abstract class UserApi {
  factory UserApi(Dio dio, {String baseUrl}) = _$UserApi;

  @POST("/save")
  Future<String> saveUser(@Body() User user);
  // 若需直接解析为DateTime,可改为Future<DateTime>,需确保Dio能正确解析后端返回的Timestamp格式
}

4. 生成自动代码

在终端执行以下命令,生成序列化及Retrofit代理代码:

flutter pub run build_runner build

5. 调用接口保存用户

在业务逻辑中实例化Dio与UserApi,发起请求:

import 'package:dio/dio.dart';
import 'user_api.dart';
import 'user.dart';

void submitUser() async {
  final dio = Dio();
  final userApi = UserApi(dio);

  try {
    // 构造要提交的用户对象
    final newUser = User(username: "zhangsan", email: "zhangsan@example.com");
    // 调用保存接口
    String saveTime = await userApi.saveUser(newUser);
    print("用户保存成功,返回时间戳:$saveTime");
  } catch (e) {
    print("保存失败:$e");
    // 可在此处理网络错误、后端异常等情况
  }
}

注意事项

  • 确保后端服务地址可被Flutter应用访问(真机调试时需用后端局域网IP,而非localhost)
  • 若后端返回的Timestamp格式特殊,可通过自定义Dio转换器实现DateTime的自动解析
  • 建议添加Dio拦截器统一处理请求头、响应码等逻辑

内容的提问来源于stack exchange,提问作者ASMA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 05:22:08