Flutter中如何使用shelf库
如何在Flutter项目中使用shelf库创建后端服务?我尝试在pubspec.yaml中添加依赖后运行,但总是报错。能否提供一个完整的示例,包括路由设置和基础API实现?最好能说明如何处理跨域请求以及将shelf服务与前端界面对接的具体步骤。
2 回复
在Flutter中使用shelf库创建HTTP服务器:
- 添加依赖:
dependencies:
shelf: ^1.4.0
- 基本用法:
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 库来创建简单的后端服务器,通常用于开发、测试或轻量级应用。以下是基本步骤和示例代码:
步骤
- 添加依赖:在
pubspec.yaml中添加shelf和shelf_router(用于路由管理)。 - 编写服务器代码:创建服务器并定义路由处理程序。
- 运行服务器:在 Flutter 应用中启动服务器(通常用于本地开发)。
示例代码
- pubspec.yaml 配置:
dependencies:
shelf: ^1.4.0
shelf_router: ^1.1.0
- 服务器实现(例如在
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 即可测试接口。

