转换Html.文件到Uint8List in flutter



我正在使用Drop zone flutter包。它返回Html。文件将文件放入小部件中时。我想把它转换成Io。文件或Uint8List格式,以便上传。

Html文件可以用FileReader读取从飞镖:html包:

void loadImage(html.File file) async {
final reader = html.FileReader();
reader.readAsArrayBuffer(file);
await reader.onLoad.first;
setState(() {
imageData = reader.result as Uint8List;
});
}

下面是完整的演示小部件:

import 'dart:typed_data';
import 'dart:html' as html;
import 'package:flutter/material.dart';
import 'package:drop_zone/drop_zone.dart';
class DropzoneDemo extends StatefulWidget {
@override
_DropzoneDemoState createState() => _DropzoneDemoState();
}
class _DropzoneDemoState extends State<DropzoneDemo> {
Uint8List? imageData;
@override
Widget build(BuildContext context) => MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Dropzone demo'),
),
body: Center(
child: Container(
child: Stack(
children: [
DropZone(
onDrop: (List<html.File>? files) => loadImage(files![0]),
child: Container(),
),
if (imageData != null)
Center(child: Image.memory(imageData!))
else
Center(child: Text('Drop image here')),
],
),
),
),
),
);
void loadImage(html.File file) async {
final reader = html.FileReader();
reader.readAsArrayBuffer(file);
final res = await reader.onLoad.first;
print('${res.total} bytes loaded');
setState(() {
imageData = reader.result as Uint8List;
});
}
}

最新更新