Web approach - basic look and feel done
This commit is contained in:
@@ -1,12 +1,16 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:typed_data';
|
||||
import 'package:flutter/foundation.dart' show kIsWeb;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'widgets/attachment_gallery_screen.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:lucide_icons/lucide_icons.dart';
|
||||
import 'package:lucide_icons_flutter/lucide_icons.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart' as flutter_secure_storage;
|
||||
import 'package:image_picker/image_picker.dart';
|
||||
import 'package:flutter_image_compress/flutter_image_compress.dart';
|
||||
import '../../../core/network/dio_client.dart';
|
||||
import '../../../core/widgets/responsive_layout.dart';
|
||||
import '../providers/providers.dart';
|
||||
import '../data/models.dart';
|
||||
import '../../../core/utils/snackbar_service.dart';
|
||||
@@ -133,11 +137,16 @@ class _AddTransactionScreenState extends ConsumerState<AddTransactionScreen> {
|
||||
final XFile? image = await _picker.pickImage(source: source);
|
||||
if (image != null) {
|
||||
final bytes = await image.readAsBytes();
|
||||
final compressedBytes = await FlutterImageCompress.compressWithList(
|
||||
bytes,
|
||||
minWidth: 600,
|
||||
quality: 80,
|
||||
);
|
||||
Uint8List compressedBytes = bytes;
|
||||
if (!kIsWeb) {
|
||||
try {
|
||||
compressedBytes = await FlutterImageCompress.compressWithList(
|
||||
bytes,
|
||||
minWidth: 600,
|
||||
quality: 80,
|
||||
);
|
||||
} catch (_) {}
|
||||
}
|
||||
final base64String = base64Encode(compressedBytes);
|
||||
setState(() {
|
||||
base64Attachments.add({
|
||||
@@ -751,8 +760,10 @@ class _AddTransactionScreenState extends ConsumerState<AddTransactionScreen> {
|
||||
)
|
||||
],
|
||||
),
|
||||
body: SafeArea(
|
||||
child: SingleChildScrollView(
|
||||
body: MaxContentWidth(
|
||||
maxWidth: 800,
|
||||
child: SafeArea(
|
||||
child: SingleChildScrollView(
|
||||
padding: const EdgeInsets.all(24.0),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||
@@ -988,7 +999,7 @@ class _AddTransactionScreenState extends ConsumerState<AddTransactionScreen> {
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
image: DecorationImage(
|
||||
image: _jwtToken != null
|
||||
? NetworkImage('https://app.technobeesolutions.in/api/kifi-v2/transactions/${widget.transaction!.id}/attachments/${att.id}/content', headers: {'Authorization': 'Bearer $_jwtToken'})
|
||||
? NetworkImage('${DioClient().dio.options.baseUrl}/transactions/${widget.transaction!.id}/attachments/${att.id}/content', headers: {'Authorization': 'Bearer $_jwtToken'})
|
||||
: const AssetImage('assets/images/placeholder.png') as ImageProvider,
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
@@ -1096,6 +1107,7 @@ class _AddTransactionScreenState extends ConsumerState<AddTransactionScreen> {
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1105,7 +1117,7 @@ class _AddTransactionScreenState extends ConsumerState<AddTransactionScreen> {
|
||||
// Add existing attachments
|
||||
for (final att in existingAttachments) {
|
||||
if (_jwtToken != null) {
|
||||
allImages.add(NetworkImage('https://app.technobeesolutions.in/api/kifi-v2/transactions/${widget.transaction!.id}/attachments/${att.id}/content', headers: {'Authorization': 'Bearer $_jwtToken'}));
|
||||
allImages.add(NetworkImage('${DioClient().dio.options.baseUrl}/transactions/${widget.transaction!.id}/attachments/${att.id}/content', headers: {'Authorization': 'Bearer $_jwtToken'}));
|
||||
} else {
|
||||
allImages.add(const AssetImage('assets/images/placeholder.png'));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user