Houshan-Basa/lib/ui/widgets/components/bot/bot_row_card.dart

147 lines
5.8 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:hoshan/data/model/ai/bots_model.dart';
import 'package:hoshan/ui/theme/colors.dart';
import 'package:hoshan/ui/theme/cubit/theme_mode_cubit.dart';
import 'package:hoshan/ui/theme/responsive.dart';
import 'package:hoshan/ui/theme/text.dart';
import 'package:hoshan/ui/widgets/components/image/network_image.dart';
class BotRowCard extends StatelessWidget {
final Bots bot;
final int index;
const BotRowCard({super.key, required this.bot, this.index = 0});
@override
Widget build(BuildContext context) {
final isDark = context.read<ThemeModeCubit>().state == ThemeMode.dark;
return Container(
width: Responsive(context).isMobile()
? MediaQuery.sizeOf(context).width * 0.7
: 300,
margin: const EdgeInsets.symmetric(horizontal: 8, vertical: 8),
decoration: BoxDecoration(
boxShadow: const [
BoxShadow(
color: Color(0x664D4D4D),
blurRadius: 6,
offset: Offset(0, 1),
spreadRadius: 0,
)
],
color: Theme.of(context).colorScheme.surface,
borderRadius: BorderRadius.circular(8)),
child: Stack(
children: [
Positioned(
top: 0,
right: 0,
bottom: 0,
child: Container(
width: 40,
decoration: BoxDecoration(
borderRadius: const BorderRadius.only(
topRight: Radius.circular(8),
bottomRight: Radius.circular(8)),
color: isDark
? index % 2 == 0
? Theme.of(context).colorScheme.primary
: Theme.of(context).colorScheme.secondary
: index % 2 == 0
? AppColors.primaryColor[200]
: AppColors.secondryColor[200]),
)),
Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
children: [
const SizedBox(
width: 8,
),
Center(
child: Container(
padding: const EdgeInsets.all(2),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: index % 2 == 0
? AppColors.primaryColor.defaultShade
: AppColors.secondryColor.defaultShade),
child: ImageNetwork(
width: 48,
height: 48,
radius: 360,
url: bot.image,
color: bot.image != null && bot.image!.contains('/llm')
? Theme.of(context).colorScheme.onSurface
: null,
),
),
),
Expanded(
child: Padding(
padding:
const EdgeInsets.symmetric(horizontal: 8.0, vertical: 4),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
bot.name ?? '',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: AppTextStyles.body5.copyWith(
fontWeight: FontWeight.bold,
color: Theme.of(context).colorScheme.onSurface),
),
const SizedBox(
height: 4,
),
Row(
children: [
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
color: index % 2 == 0
? AppColors.primaryColor.defaultShade
: AppColors.secondryColor.defaultShade,
),
padding: const EdgeInsets.symmetric(
horizontal: 4, vertical: 4),
child: Text(
'رایگان',
style: AppTextStyles.body6.copyWith(
color: Colors.white,
fontWeight: FontWeight.bold),
),
),
Container(
height: 12,
width: 1,
color: AppColors.gray.defaultShade,
margin: const EdgeInsets.symmetric(horizontal: 4),
),
Text(
bot.limit != null
? bot.limit == -1
? 'بدون محدودیت'
: '${bot.limit} پیام در هر ساعت'
: '',
style: AppTextStyles.body5.copyWith(
color: bot.limit == -1
? Theme.of(context).colorScheme.secondary
: Theme.of(context).colorScheme.onSurface),
),
],
)
],
),
)),
],
),
),
],
),
);
}
}