nhance_partner/lib/presentation/themes/indicators/upload_doc_theme.dart
2025-09-12 16:15:43 +05:30

205 lines
7.0 KiB
Dart

// import 'dart:html' as html;
// import 'package:file_picker/file_picker.dart';
// import 'package:flutter/foundation.dart';
// import 'package:flutter/material.dart';
// import 'package:google_fonts/google_fonts.dart';
// import 'package:http/http.dart' as http;
//
// import 'package:flutter/material.dart';
// import 'package:file_picker/file_picker.dart';
// import 'package:http/http.dart' as http;
// import 'package:http_parser/http_parser.dart';
// import 'package:flutter/foundation.dart' show kIsWeb;
//
// class ThemedUploadField extends FormField<String> {
// ThemedUploadField({
// super.key,
// String? hintText,
// double? txtwidth,
// double? txtheight,
// Color? backgroundColor,
// Color? borderColor,
// Color? errorBorderColor,
// FormFieldValidator<String>? validator,
// Function(String fileName, dynamic file)? onFileSelected,
// }) : super(
// validator: validator,
// builder: (FormFieldState<String> state) {
// return _ThemedUploadFieldBody(
// hintText: hintText,
// txtwidth: txtwidth,
// txtheight: txtheight,
// backgroundColor: backgroundColor,
// borderColor: borderColor,
// errorBorderColor: errorBorderColor,
// onFileSelected: (fileName, file) {
// state.didChange(fileName); // update validation state
// onFileSelected?.call(fileName, file);
// },
// errorText: state.errorText,
// );
// },
// );
// }
//
// class _ThemedUploadFieldBody extends StatefulWidget {
// const _ThemedUploadFieldBody({
// this.hintText,
// this.txtwidth,
// this.txtheight,
// this.backgroundColor,
// this.borderColor,
// this.errorBorderColor,
// this.onFileSelected,
// this.errorText,
// });
//
// final String? hintText;
// final double? txtwidth;
// final double? txtheight;
// final Color? backgroundColor;
// final Color? borderColor;
// final Color? errorBorderColor;
// final Function(String fileName, dynamic file)? onFileSelected;
// final String? errorText;
//
// @override
// State<_ThemedUploadFieldBody> createState() => _ThemedUploadFieldBodyState();
// }
//
// class _ThemedUploadFieldBodyState extends State<_ThemedUploadFieldBody> {
// String? selectedFileName;
//
// // void pickPDFWeb() {
// // final uploadInput = html.FileUploadInputElement();
// // uploadInput.accept = '.pdf';
// // uploadInput.click();
// //
// // uploadInput.onChange.listen((e) {
// // final file = uploadInput.files!.first;
// //
// // // Ensure PDF type
// // if (!file.type.contains("pdf")) {
// // ScaffoldMessenger.of(
// // context,
// // ).showSnackBar(SnackBar(content: Text("Only PDF files allowed")));
// // return;
// // }
// //
// // // Size check (3 MB)
// // const maxFileSize = 3 * 1024 * 1024;
// // if (file.size > maxFileSize) {
// // ScaffoldMessenger.of(
// // context,
// // ).showSnackBar(SnackBar(content: Text("File exceeds 3MB")));
// // return;
// // }
// //
// // setState(() => selectedFileName = file.name);
// // widget.onFileSelected?.call(file.name, file);
// // });
// // }
//
// Future<void> pickPDF() async {
// try {
// final result = await FilePicker.platform.pickFiles(
// type: FileType.custom,
// allowedExtensions: ['pdf'],
// withData: true,
// );
//
// if (result != null && result.files.isNotEmpty) {
// final file = result.files.first; // PlatformFile
//
// if (file.extension?.toLowerCase() != "pdf") {
// ScaffoldMessenger.of(context).showSnackBar(
// const SnackBar(content: Text("Only PDF files allowed")),
// );
// return;
// }
//
// if (file.size > 3 * 1024 * 1024) {
// ScaffoldMessenger.of(
// context,
// ).showSnackBar(const SnackBar(content: Text("File exceeds 3MB")));
// return;
// }
//
// setState(() => selectedFileName = file.name);
//
// // Always pass PlatformFile
// widget.onFileSelected?.call(file.name, file);
// }
// } catch (e, st) {
// debugPrint("File picker error: $e\n$st"); // 👈 safer logging
// // ScaffoldMessenger.of(
// // context,
// // ).showSnackBar(const SnackBar(content: Text("Error picking file")));
// }
// }
//
// @override
// Widget build(BuildContext context) {
// return Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// Container(
// width: widget.txtwidth ?? MediaQuery.of(context).size.width,
// height: widget.txtheight,
// child: DecoratedBox(
// decoration: BoxDecoration(borderRadius: BorderRadius.circular(10)),
// child: InkWell(
// onTap: pickPDF,
// borderRadius: BorderRadius.circular(10),
// child: Container(
// padding: const EdgeInsets.symmetric(
// vertical: 10,
// horizontal: 15,
// ),
// decoration: BoxDecoration(
// color: widget.backgroundColor ?? Colors.white,
// borderRadius: BorderRadius.circular(10),
// border: Border.all(
// color: widget.errorText != null
// ? (widget.errorBorderColor ?? Colors.red)
// : (widget.borderColor ?? Colors.grey.shade50),
// width: 1,
// ),
// ),
// child: Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// Expanded(
// child: Text(
// selectedFileName ??
// widget.hintText ??
// "Upload Documents",
// style: TextStyle(
// fontSize: 12,
// color: widget.errorText != null
// ? Colors.red
// : Colors.black,
// ),
// overflow: TextOverflow.ellipsis,
// ),
// ),
// const Icon(Icons.file_upload_outlined, color: Colors.black),
// ],
// ),
// ),
// ),
// ),
// ),
// // if (widget.errorText != null)
// // Padding(
// // padding: const EdgeInsets.only(left: 8, top: 4),
// // child: Text(
// // widget.errorText!,
// // style: const TextStyle(color: Colors.red, fontSize: 10),
// // ),
// // ),
// ],
// );
// }
// }