以前还真不知道Flutter可以做服务端使用,一直以为是客户端的使用。
这里介绍下Flutter自己做服务端,简单的数据获取:
服务端目录如下:

image.png
pubspec.yaml:
name: flutter_website_server
description: Flutter企业站实践
dependencies:
http_server: ^0.9.8
F5键启动服务,生成launch.json文件,修改文件内容如下:
launch.json:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [{
"name": "Dart",
"program": "main.dart",
"request": "launch",
"type": "dart"
}]
}
main.dart:
import 'dart:convert';
import 'dart:io';
import 'data.dart';
import 'package:http_server/http_server.dart';
main() async {
var requestServer = await HttpServer.bind('172.25.11.67', 8080);
print('http服务启动起来');
// 处理请求
await for (HttpRequest request in requestServer) {
// request.response
// ..write('request success...')
// ..close();
handleMessage(request);
}
}
void handleMessage(HttpRequest request) {
try {
if (request.method == 'GET') {
handleGET(request);
} else if (request.method == 'POST') {
// TODO
handleGET(request);
}
} catch (e) {
print('捕获了一个异常:$e');
}
}
void handleGET(HttpRequest request) {
// 获取请求参数
var action = request.uri.queryParameters['action'];
if (action == 'getProducts') {
print('获取产品数据。。。');
request.response
..write(json.encode(products))
..close();
}
if (action == 'getNews') {
print('获取新闻数据。。。');
request.response
..write(json.encode(news))
..close();
}
}
void handlePOST(HttpRequest request) {
// 处理POST请求
}
data.dart:
// 产品数据
var products = {
"items": [
{"desc": "描述1", "imageUrl": "", "type": "新款", "name": "苹果笔记本"}
]
};
// 新闻数据
var news = {
"items": [
{"author": "作者", "title": "标题", "content": "新款"}
]
};
F5启动服务即可:

image.png
chorme浏览器输入链接即可展示内容。
推荐一个扩展程序:
JSONView