didvan-app/lib/views/widgets/state_handlers/empty_state.dart

79 lines
2.3 KiB
Dart

import 'package:didvan/config/theme_data.dart';
import 'package:didvan/views/widgets/didvan/button.dart';
import 'package:didvan/views/widgets/didvan/text.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
class EmptyState extends StatelessWidget {
final String asset;
final String title;
final String? subtitle;
final String? buttonTitle;
final VoidCallback? action;
final Color? titleColor;
final double? height;
const EmptyState({
Key? key,
required this.asset,
required this.title,
this.action,
this.buttonTitle,
this.subtitle,
this.titleColor,
this.height,
}) : super(key: key);
@override
Widget build(BuildContext context) {
final isSvg = asset.toLowerCase().endsWith('.svg');
return Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(
width: double.infinity,
height: height ?? 300,
child: isSvg
? SvgPicture.asset(asset, fit: BoxFit.contain)
: Image.asset(asset,
fit: BoxFit.fitWidth, height: height, width: double.infinity),
),
const SizedBox(height: 10),
Padding(
padding: const EdgeInsets.only(right: 20, left: 20),
child: DidvanText(
title,
style: Theme.of(context).textTheme.displaySmall,
color: titleColor ?? Theme.of(context).colorScheme.caption,
textAlign: TextAlign.center,
),
),
// if (subtitle != null) const SizedBox(height: 8),
// if (subtitle != null)
// Padding(
// padding: const EdgeInsets.only(right: 20, left: 20),
// child: DidvanText(
// subtitle!,
// color: Theme.of(context).colorScheme.caption,
// ),
// ),
// if (action != null) const SizedBox(height: 16),
if (action != null)
Center(
child: Padding(
padding: const EdgeInsets.all(25.0),
child: DidvanButton(
height: 50,
onPressed: action,
title: buttonTitle,
width: double.infinity,
),
),
),
],
);
}
}