card static method

Widget card(
  1. BuildContext context,
  2. Uint8List? fileData, {
  3. required String title,
  4. required String subtitle,
  5. 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,
          ),*/
          );
        }
      },
    );
  }
}