import 'dart:io';

import 'package:flutter/material.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/buttons/app_back_button.dart';

class MultiFilesPickerItem extends StatelessWidget {
  final File file;
  final Function(File) onRemoveTap;

  const MultiFilesPickerItem({Key key, this.file, this.onRemoveTap}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    var isImage = file.path.split(".").last.toLowerCase() == "png" || file.path.split(".").last.toLowerCase() == "jpg";
    var isPdf = file.path.split(".").last.toLowerCase() == "pdf";
    var isExcel = file.path.split(".").last.toLowerCase() == "xlsx";
    return Container(
      width: 80 * AppStyle.getScaleFactor(context),
      height: 80 * AppStyle.getScaleFactor(context),
      decoration: BoxDecoration(
        boxShadow: [BoxShadow(color: isImage ? Colors.black38 : AColors.cyan.withOpacity(0.5), blurRadius: 2)],
        image: DecorationImage(
          image: isImage
              ? FileImage(file)
              : AssetImage("assets/images/${isPdf ? "pdf" : isExcel ? "excel" : "doc"}.png"),
          fit: BoxFit.cover,
        ),
        borderRadius: BorderRadius.circular(8),
      ),
      child: MaterialButton(
        padding: EdgeInsets.zero,
        onPressed: () {
          if (isImage) {
            Navigator.of(context).push(
              MaterialPageRoute(
                builder: (_) => Scaffold(
                  body: SafeArea(
                    child: Stack(
                      children: [
                        Center(child: isImage ? InteractiveViewer(child: Image(image: FileImage(file))) : const SizedBox.shrink()),
                        const ABackButton(),
                      ],
                    ),
                  ),
                ),
              ),
            );
          }
        },
        child: Align(
          alignment: Alignment.topRight,
          child: IconButton(
            padding: const EdgeInsets.all(2.0),
            icon: Container(
              padding: const EdgeInsets.all(1),
              decoration: BoxDecoration(color: Theme.of(context).scaffoldBackgroundColor.withOpacity(.3), borderRadius: BorderRadius.circular(8)),
              child: const Icon(
                Icons.remove_circle,
                color: AColors.red,
              ),
            ),
            onPressed: () {
              onRemoveTap(file);
            },
          ),
        ),
      ),
    );
  }
}
