import 'dart:async'; import 'dart:convert'; import 'dart:typed_data';

import 'package:flutter/material.dart'; import 'package:dio/dio.dart';

class StreamPage extends StatefulWidget { @override _StreamPageState createState() => _StreamPageState(); }

class _StreamPageState extends State { StreamController _streamController = StreamController();

@override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Stream Example'), leading: IconButton( icon: Icon(Icons.arrow_back), onPressed: () { _getData(); }, )), body: StreamBuilder( stream: _streamController.stream, builder: (context, snapshot) { if (snapshot.hasData) { return Center( child: Text(snapshot.data!), ); } else { return Center( child: Text('Waiting for data...'), ); } }, ), ); }

@override void initState() { super.initState(); _getData(); }

@override void dispose() { _streamController.close(); super.dispose(); }

void _getData() async { Response response = await Dio().post( 'http://127.0.0.1:5000/test', options: Options( responseType: ResponseType.stream, ), ); print(response.data);

response.data.stream
    .transform(StreamTransformer<Uint8List, String>.fromHandlers(
  handleData: (data, sink) {
    sink.add(utf8.decode(data));
  },
)).listen((data) {
  _streamController.add(data);
});

}


原文地址: http://www.cveoy.top/t/topic/fesk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录