131 lines
4.8 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:gap/gap.dart';
import 'package:minecraft_server_installer/main/constants.dart';
import 'package:package_info_plus/package_info_plus.dart';
class AboutTab extends StatelessWidget {
const AboutTab({super.key});
@override
Widget build(BuildContext context) => SizedBox(
width: 460,
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Image.asset('assets/img/mcsi_logo.png', width: 100, height: 100),
Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
Constants.appName,
style: Theme.of(context)
.textTheme
.headlineMedium
?.copyWith(fontWeight: FontWeight.w900, color: Colors.blueGrey.shade900),
),
FutureBuilder(
future: PackageInfo.fromPlatform(),
builder: (context, snapshot) => Text(
'Version ${snapshot.data?.version ?? ''}',
style: Theme.of(context).textTheme.bodyMedium?.copyWith(color: Colors.grey.shade700),
),
),
],
),
],
),
const Gap(32),
Container(
padding: const EdgeInsets.symmetric(vertical: 16, horizontal: 24),
decoration: BoxDecoration(
color: Colors.blueGrey.shade50,
borderRadius: BorderRadius.circular(8),
border: Border(left: BorderSide(color: Colors.blueGrey.shade300, width: 6)),
),
child: Row(
children: [
Padding(
padding: const EdgeInsets.only(bottom: 8),
child: Icon(Icons.format_quote_rounded, color: Colors.grey.shade700),
),
const Gap(8),
Text(
'讓 Minecraft 伺服器安裝變得更簡單!',
style: Theme.of(context).textTheme.bodyLarge?.copyWith(
fontWeight: FontWeight.w500,
color: Colors.grey.shade700,
),
),
],
),
),
const Gap(32),
Row(
children: [
_actionButton(text: '教學影片', svgAssetName: 'assets/svg/youtube.svg'),
const Gap(12),
_actionButton(text: '問題回報', svgAssetName: 'assets/svg/bug.svg'),
const Gap(12),
_actionButton(text: '聯絡作者', svgAssetName: 'assets/svg/send.svg'),
const Gap(12),
_actionButton(text: '原始碼', svgAssetName: 'assets/svg/github.svg'),
],
),
const Spacer(),
Text(
'Copyright © 2025 SquidSpirit',
style: Theme.of(context).textTheme.bodyMedium?.copyWith(color: Colors.grey.shade700),
),
],
),
);
Widget _actionButton({
required String text,
required String svgAssetName,
}) =>
Builder(
builder: (context) => Expanded(
child: Material(
color: Colors.transparent,
borderRadius: BorderRadius.circular(8),
child: Ink(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
border: Border.all(color: Colors.blueGrey.shade50, width: 2),
),
child: InkWell(
onTap: () {},
borderRadius: BorderRadius.circular(8),
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 32, horizontal: 16),
child: Column(
children: [
SvgPicture.asset(
svgAssetName,
width: 32,
height: 32,
colorFilter: ColorFilter.mode(Colors.grey.shade800, BlendMode.srcIn),
),
const Gap(12),
Text(
text,
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w500,
color: Colors.grey.shade700,
),
),
],
),
),
),
),
),
),
);
}