Flutter中如何使用shelf库

如何在Flutter项目中使用shelf库创建后端服务?我尝试在pubspec.yaml中添加依赖后运行,但总是报错。能否提供一个完整的示例,包括路由设置和基础API实现?最好能说明如何处理跨域请求以及将shelf服务与前端界面对接的具体步骤。

2 回复

在Flutter中使用shelf库创建HTTP服务器:

  1. 添加依赖:
dependencies:
  shelf: ^1.4.0
  1. 基本用法:
import 'package:shelf/shelf.dart';
import 'package:shelf/shelf_io.dart' as io;

void main() async {
  var handler = const Pipeline().addMiddleware(logRequests()).addHandler(_echoRequest);
  
  var server = await io.serve(handler, 'localhost', 8080);
}

Response _echoRequest(Request request) {
  return Response.ok('Hello World');
}

shelf适合构建轻量级HTTP服务,支持中间件和路由扩展。

更多关于Flutter中如何使用shelf库的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中使用 shelf 库来创建简单的后端服务器,通常用于开发、测试或轻量级应用。以下是基本步骤和示例代码:

步骤

  1. 添加依赖:在 pubspec.yaml 中添加 shelfshelf_router(用于路由管理)。
  2. 编写服务器代码:创建服务器并定义路由处理程序。
  3. 运行服务器:在 Flutter 应用中启动服务器(通常用于本地开发)。

示例代码

  1. pubspec.yaml 配置
dependencies:
  shelf: ^1.4.0
  shelf_router: ^1.1.0
  1. 服务器实现(例如在 main.dart 或单独文件中):
import 'package:shelf/shelf.dart';
import 'package:shelf/shelf_io.dart' as io;
import 'package:shelf_router/shelf_router.dart';

void main() async {
  final app = Router();

  // 定义路由
  app.get('/', (Request request) {
    return Response.ok('Hello, Shelf!');
  });

  app.get('/user/<id>', (Request request, String id) {
    return Response.ok('User ID: $id');
  });

  // 启动服务器(默认端口 8080)
  final server = await io.serve(app, 'localhost', 8080);
  print('服务器运行在 http://${server.address.host}:${server.port}');
}

注意事项

  • 平台限制:Flutter Web 不支持 dart:io,因此 shelf 仅适用于 Flutter Mobile/Desktop。
  • 用途:适合本地开发或轻量 API 测试,生产环境建议使用专用后端(如 Firebase、Django 等)。
  • 热重载:修改代码后需重启服务器。

运行后访问 http://localhost:8080 即可测试接口。

回到顶部