You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.3 KiB
Dart
59 lines
2.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_svg/flutter_svg.dart';
|
|
import 'package:mohem_flutter_app/classes/colors.dart';
|
|
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
|
|
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
|
|
|
|
class AttachmentOptions extends StatelessWidget {
|
|
VoidCallback onCameraTap;
|
|
VoidCallback onGalleryTap;
|
|
VoidCallback onFilesTap;
|
|
bool showFilesOption;
|
|
|
|
AttachmentOptions({Key? key, required this.onCameraTap, required this.onGalleryTap, required this.onFilesTap, this.showFilesOption = true}) : super(key: key);
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return SizedBox(
|
|
width: double.infinity,
|
|
child: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
"Upload Attachment".toSectionHeading(),
|
|
"Select from gallery or open camera".toText11(weight: FontWeight.w500),
|
|
GridView(
|
|
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 105 / 105, crossAxisSpacing: 9, mainAxisSpacing: 9),
|
|
physics: const NeverScrollableScrollPhysics(),
|
|
padding: const EdgeInsets.only(top: 21, bottom: 14),
|
|
shrinkWrap: true,
|
|
children: [
|
|
itemView("open_camera.svg", "Open\nCamera", onCameraTap),
|
|
itemView("gallery.svg", "Upload from\nGallery", onGalleryTap),
|
|
if (showFilesOption) itemView("files.svg", "Upload from\nFiles", onFilesTap),
|
|
],
|
|
)
|
|
],
|
|
).paddingOnly(left: 21, right: 21, bottom: 21),
|
|
);
|
|
}
|
|
|
|
Widget itemView(String icon, String title, VoidCallback onTap) {
|
|
return InkWell(
|
|
onTap: onTap,
|
|
child: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
children: [
|
|
SvgPicture.asset("assets/images/$icon"),
|
|
title.toText11(isBold: true),
|
|
],
|
|
).paddingOnly(left: 13, right: 13, top: 16, bottom: 12).expanded.objectContainerBorderView(
|
|
disablePadding: true,
|
|
radius: 10,
|
|
color: MyColors.greyF7Color.withOpacity(.48),
|
|
borderColor: MyColors.lightGreyE5Color.withOpacity(.48),
|
|
),
|
|
);
|
|
}
|
|
}
|