Yimaru-Mobile/lib/ui/widgets/privacy_policy_tile.dart

81 lines
2.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:iconsax/iconsax.dart';
import 'package:yimaru_app/ui/common/app_strings.dart';
import '../common/app_colors.dart';
class PrivacyPolicyTile extends StatelessWidget {
final String title;
const PrivacyPolicyTile({super.key, required this.title});
IconData _getIcon() {
if (title == 'Introduction') {
return Icons.list_alt;
} else if (title == 'Information We Collect') {
return Icons.all_inbox;
} else if (title == 'How We Use Your Information') {
return Icons.lightbulb_outline;
} else if (title == 'Data Sharing and Disclosure') {
return Icons.share;
} else if (title == 'Your Rights and Choices') {
return Icons.confirmation_num;
} else if (title == 'Data Security') {
return Icons.shield_moon_outlined;
} else {
return Iconsax.pen_add;
}
}
@override
Widget build(BuildContext context) => _buildExpansionTileCard();
Widget _buildExpansionTileCard() => Padding(
padding: const EdgeInsets.only(bottom: 15),
child: _buildExpansionTile(),
);
Widget _buildExpansionTile() => ExpansionTile(
title: _buildTitle(),
iconColor: kcDarkGrey,
textColor: kcDarkGrey,
leading: _buildIcon(),
showTrailingIcon: true,
initiallyExpanded: false,
collapsedIconColor: kcDarkGrey,
collapsedTextColor: kcDarkGrey,
expandedAlignment: Alignment.centerLeft,
childrenPadding: const EdgeInsets.all(15),
backgroundColor: kcPrimaryColor.withOpacity(0.1),
controlAffinity: ListTileControlAffinity.trailing,
expandedCrossAxisAlignment: CrossAxisAlignment.start,
tilePadding: const EdgeInsets.symmetric(horizontal: 15),
collapsedBackgroundColor: kcPrimaryColor.withOpacity(0.1),
shape: Border.all(color: kcPrimaryColor.withOpacity(0.2)),
children: _buildExpansionTileChildren(),
);
Widget _buildIcon() => Icon(
_getIcon(),
color: kcPrimaryColor,
);
List<Widget> _buildExpansionTileChildren() => [_buildContent()];
Widget _buildTitle() => Text(
title,
style: const TextStyle(
fontSize: 16,
color: kcDarkGrey,
fontWeight: FontWeight.w600,
),
);
Widget _buildContent() => const Text(
ksPrivacyPolicy,
style: TextStyle(
color: kcDarkGrey,
),
);
}