Futter应用里起一个 Dart Http Server服务

18 min read
import 'dart:io';

import 'package:flutter/material.dart';

class DartHttpServer extends StatefulWidget {
  const DartHttpServer({Key? key}) : super(key: key);

  @override
  State<DartHttpServer> createState() => _DartHttpServerState();
}

class _DartHttpServerState extends State<DartHttpServer> {
  String statusText = "Start Server";
  startServer() async {
    setState(() {
      statusText = "Starting server on Port : 8080";
    });
    var server = await HttpServer.bind(InternetAddress.loopbackIPv4, 8080);
    print("Server running on IP : ${server.address} On Port : ${server.port}");
    await for (var request in server) {
      request.response
        ..headers.contentType = ContentType("text", "plain", charset: "utf-8")
        ..write('Hello, world')
        ..close();
    }
    setState(() {
      statusText =
          "Server running on IP : ${server.address} On Port : ${server.port}";
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: <Widget>[
          TextButton(
            onPressed: () {
              startServer();
            },
            child: Text(statusText),
          )
        ],
      ),
    ));
  }
}