kuwot-app/lib/features/app_settings/presentation/widgets/about_widget.dart

69 lines
2.2 KiB
Dart
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher_string.dart';
class AboutWidget extends StatelessWidget {
const AboutWidget({super.key});
@override
Widget build(BuildContext context) {
return Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Text('Links & Credits', style: Theme.of(context).textTheme.titleMedium),
const Divider(),
_buildCreditItem(
context,
title: 'Kuwot App Source',
description:
'Source code for this app. Any suggestions or contributions are welcome.',
url: 'https://github.com/dhemasnurjaya/kuwot-app',
),
_buildCreditItem(
context,
title: 'Quotes-500K',
description:
'Large quotes dataset by Shivali Goel, Rishi Madhok, Shweta Garg. Initially created for "Proposing Contextually Relevant Quotes for Images" journal.',
url: 'https://github.com/ShivaliGoel/Quotes-500K',
),
_buildCreditItem(
context,
title: 'Unsplash',
description:
'Over 6 million free high-resolution photos and illustrations brought to you by the worlds most generous community of contributors.',
url: 'https://unsplash.com/',
),
],
);
}
Widget _buildCreditItem(
BuildContext context, {
required String title,
required String description,
required String url,
}) {
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Text(title, style: Theme.of(context).textTheme.titleMedium),
Text(description),
const SizedBox(height: 4),
GestureDetector(
child: Text(
url,
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
decoration: TextDecoration.underline,
color: Colors.indigoAccent,
decorationColor: Colors.indigoAccent,
),
),
onTap: () async {
await launchUrlString(url);
},
),
const SizedBox(height: 16),
],
);
}
}