import 'package:flutter/material.dart'; import 'package:my_portfolio/constants/colors.dart'; import 'package:my_portfolio/utils/project_utils.dart'; import 'dart:js' as js; class ProjectCardWidget extends StatelessWidget { const ProjectCardWidget({super.key, required this.project}); final ProjectUtils project; @override Widget build(BuildContext context) { return Container( clipBehavior: Clip.antiAlias, height: 290, width: 260, decoration: BoxDecoration( borderRadius: BorderRadius.circular(10), color: CustomColor.bgLight2, ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ // project img Image.asset( project.image, height: 140, width: 260, fit: BoxFit.cover, ), // title Padding( padding: const EdgeInsets.fromLTRB(12, 15, 12, 6), child: Text( project.title, style: const TextStyle( fontWeight: FontWeight.w600, color: CustomColor.whitePrimary, ), ), ), // subtitle Padding( padding: const EdgeInsets.fromLTRB(12, 0, 12, 12), child: Text( project.subtitle, style: TextStyle(fontSize: 12, color: CustomColor.whiteSecondary), ), ), const Spacer(), // footer Container( color: CustomColor.bgLight1, padding: EdgeInsets.symmetric(horizontal: 12, vertical: 10), child: Row( children: [ const Text( "Available on:", style: TextStyle( color: CustomColor.yellowSecondary, fontSize: 10, ), ), const Spacer(), if (project.iosLink != null) InkWell( onTap: () { js.context.callMethod("open", [project.iosLink]); }, child: Image.asset("assets/ios_icon.png", width: 19), ), if (project.androidLink != null) Padding( padding: const EdgeInsets.only(left: 6), child: InkWell( onTap: () { js.context.callMethod("open", [project.androidLink]); }, child: Image.asset("assets/android_icon.png", width: 17), ), ), if (project.webLink != null) Padding( padding: const EdgeInsets.only(left: 6), child: InkWell( onTap: () { js.context.callMethod("open", [project.webLink]); }, child: Image.asset("assets/web_icon.png", width: 17), ), ), ], ), ), ], ), ); } }