| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- 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<UploadFile> createState() => UploadFileState();
- }
- class UploadFileState extends State<UploadFile> {
- // 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()
- ],
- );
- }
- }
|