import 'dart:async';
import 'dart:html';
import 'dart:typed_data';
import 'dart:ui' as ui;
import 'package:flutter/cupertino.dart';
class UploadFile extends StatefulWidget {
// double width, height;
Widget child;
var callback;
UploadFile(
{Key? key,
// required this.width,
// required this.height,
required this.child,
required this.callback})
: super(key: key);
@override
State createState() => UploadFileState();
}
class UploadFileState extends State {
// InputElement input = InputElement(type: '');
FileUploadInputElement uploadInput = FileUploadInputElement();
@override
void initState() {
// TODO: implement initState
Timer(const Duration(seconds: 1), () {
// uploadInput.click();
chooseFile();
});
super.initState();
}
chooseFile() async {
uploadInput.accept = '.png,.jpg,.jpeg';
uploadInput.multiple = false;
// uploadInput.click();
uploadInput.onChange.listen((e) {
final files = uploadInput.files;
if (files?.length == 1) {
FileReader reader = FileReader();
reader.onLoadEnd.listen((event) {
setState(() {
widget.callback(reader.result as Uint8List);
// chooseImage = reader.result as Uint8List;
});
});
reader.readAsArrayBuffer(files![0]);
}
});
}
@override
Widget build(BuildContext context) {
String _divId = "file_" + DateTime.now().toIso8601String();
ui.platformViewRegistry.registerViewFactory(
_divId,
(int viewId) => uploadInput
..style.width = '100%'
..style.height = '100%'
..style.opacity = '0.0');
return Stack(
children: [
widget.child,
Positioned(
left: 0,right: 0,top: 0,bottom: 0
,child: HtmlElementView(
key: UniqueKey(),
viewType: _divId,
))
// SizedBox(
// width: widget.width,
// height: widget.height,
// child: HtmlElementView(
// key: UniqueKey(),
// viewType: _divId,
// ),
// )
// SizedBox()
],
);
}
}