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() ], ); } }