card static method
Widget
card(
- BuildContext context,
- Uint8List? fileData, {
- required String title,
- required String subtitle,
- required IconData icon,
Implementation
static Widget card(BuildContext context, Uint8List? fileData, {required String title, required String subtitle, required IconData icon}) {
if (fileData == null) {
return GlCard(
padding: const EdgeInsets.symmetric(vertical: 48.0),
shadow: false,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(icon, color: GlThemeColors.get(context).grey, size: 48),
const SizedBox(height: 8),
Text(
title,
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold, color: GlThemeColors.get(context).grey),
),
const SizedBox(height: 4),
Text(subtitle, style: TextStyle(fontSize: 14, color: GlThemeColors.get(context).grey)),
],
),
);
} else {
return FutureBuilder<bool>(
future: _isImage(fileData),
builder: (context, snapshot) {
if (!snapshot.hasData) {
// While checking type
return const SizedBox(height: 200, child: Center(child: CircularProgressIndicator()));
}
if (snapshot.data!) {
// It's an image
return Image.memory(fileData, width: 300, height: 200, fit: BoxFit.cover);
} else {
// Not an image → PDF icon
return Container(
height: 200,
width: 300,
color: Colors.grey[200],
child: SfPdfViewer.memory(fileData),
/*const Icon(
LucideIcons.picture_as_pdf,
size: 80,
color: Colors.red,
),*/
);
}
},
);
}
}