? Go Rest 应用

在此项目中,我们将使用 flutter 构建一个用户管理应用。我们使用了 go rest api 来执行 http 请求方法。此 API 提供了我们想要的所有方法:GET、POST、PUT 和 DELETE。我们将使用我们应用中的 Dio 包来调用 go rest API 提供的所有端点(users/todos/posts/comments)。我们执行了不同的操作,例如选择、添加、编辑和删除用户,以及用户帖子/待办事项和评论。

❗️ API 限制

• 在用户端点中,默认有十个用户对象。如果您删除其中任何一个,它将被一个新的 JSON 对象替换。这意味着用户列表的长度将始终等于十,您无法创建超过十个用户对象。当您想向用户添加查询参数时,情况也是如此。

• 请求方法 PUT、POST、PATCH、DELETE 需要访问令牌,该令牌需要通过“Authorization”标头作为 Bearer 令牌传递。我已经在我应用中放置了我的令牌,但如果您收到未授权错误(401),请访问此 链接 获取新令牌,并在 core 目录中的 api_config 文件中替换旧令牌。

• 数据不是永久性的,将在 20 分钟到 1 小时之间更改或删除。

? 截图

用户屏幕 创建-更新用户 待办事项屏幕 帖子屏幕
日期选择器 时间选择器 创建-更新帖子 评论屏幕
错误状态 空状态 警告对话框 进度对话框

? 实体关系图 (ERD)

? 特点

• Performing CRUD operation using Dio and go rest api
• Converting JSON string to an equivalent dart object and vice versa with json serializable
• Implementing Interceptors, Global configuration and timeout for api calls
• Exception Handling with Dio interceptor and Dartz
• Displaying error type to the user through the alert dialogs
• Colorize api info like request, response, body and exceptions in Debug console log
• Read, create, update and delete user
• Filter users by status activity or gender
• Read, create, update and delete user todos
• Filter todos by status 
• Read, create, update and delete user posts
• Deleting and updating post items by swipe them to right or left side
• Displaying user comments for each post 
• Get date/time from user by Date/Time picker
• State management with GetX 

? 目录结构

?lib
 │───main.dart  
 │───?common  
 │   │───?network
 │   │   │──dio_client.dart
 │   │   │──dio_exception.dart
 │   │   └──dio_interceptor.dart
 │   │───?widget
 │   │   │──date_time_picker.dart
 │   │   │──drop_down.dart
 │   │   │──empty_widget.dart
 │   │   │──popup_menu.dart
 │   │   │──spinkit_indicator.dart
 │   │   └──text_input.dart 
 │   └───?dialog
 │       │──create_dialog.dart
 │       │──delete_dialog.dart
 │       │──progress_dialog.dart
 │       └──retry_dialog.dart
 │───?core 
 │   │──api_config.dart
 │   │──app_asset.dart
 │   │──app_extension.dart
 │   │──app_string.dart
 │   │──app_style.dart
 │   └──app_theme.dart
 └───?featurs
     │───?comment
     │    │───?controller
     │    │   └──comment_controller.dart
     │    └───?data
     │        │───?model
     │        │   │──comment.dart
     │        │   └──comment.g.dart
     │        └───?provider
     │            └──?remote
     │               └──comment_api.dart
     │───?post
     │    │───?controller
     │    │   └──post_controller.dart
     │    │───?data
     │    │   │───?model
     │    │   │   │──post.dart
     │    │   │   └──post.g.dart
     │    │   └───?provider
     │    │       └──?remote
     │    │          └──psot_api.dart
     │    └───?view  
     │        └──?screen
     │           │──post_detail_screen.dart
     │           └──post_list_screen.dart
     │───?todo
     │    │───?controller
     │    │   └──todo_controller.dart
     │    │───?data
     │    │   │───?model
     │    │   │   │──todo.dart
     │    │   │   └──todo.g.dart
     │    │   └───?provider
     │    │       └──?remote
     │    │          └──todo_api.dart
     │    └───?view  
     │        │──?screen
     │        │  └──todo_list_screen.dart
     │        └──?widget
     │            │──circle_container.dart
     │            └──todo_list_item.dart
     └───?user
          │───?controller
          │   └──user_controller.dart
          │───?data
          │   │───?model
          │   │   │──user.dart
          │   │   └──user.g.dart
          │   └───?provider
          │       └──?remote
          │          └──user_api.dart
          └───?view  
              │──?screen
              │  └──user_list_screen.dart
              └──?widget
                 └──status_container.dart

? 依赖项

名称 链接
获取 https://pub.dev/packages/get
dio https://pub.dev/packages/dio
json_annotation https://pub.dev/packages/json_annotation
json_serializable https://pub.dev/packages/json_serializable
build_runner https://pub.dev/packages/build_runner
logger https://pub.dev/packages/logger
dartz https://pub.dev/packages/dartz
intl https://pub.dev/packages/intl
flutter_spinkit https://pub.dev/packages/flutter_spinkit

? 其他 flutter 项目

项目名称 星标
日式餐厅应用 GitHub stars
办公室家具店应用 GitHub stars
电子商务应用 GitHub stars

GitHub

查看 Github