You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

130 lines
5.2 KiB

import 'package:flutter/cupertino.dart';
import 'package:info_tren/components/cupertino_divider.dart';
import 'package:info_tren/pages/about/about_page.dart';
import 'package:url_launcher/url_launcher.dart';
class AboutPageStateCupertino extends AboutPageState {
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: Text(pageTitle),
),
child: Builder(
builder: (context) {
final topPadding = MediaQuery.of(context).padding.top;
return SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
SizedBox(
height: topPadding,
),
Center(
child: Text(
'Info Tren',
style: CupertinoTheme.of(context).textTheme.navLargeTitleTextStyle,
),
),
if (packageInfo != null)
Center(
child: Text(
packageInfo!.packageName,
style: TextStyle(
inherit: true,
fontSize: 14,
),
),
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 8.0),
child: CupertinoDivider(),
),
for (final log in mergedChangelogs) ...[
Padding(
padding: const EdgeInsets.fromLTRB(8, 8, 8, 0),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
child: Text(
log.version.toString(),
style: TextStyle(
inherit: true,
fontSize: 24,
),
),
),
if (localChangelog.isNotEmpty && log.version == localChangelog.first.version)
Container(
decoration: BoxDecoration(
border: Border.all(
color: CupertinoTheme.of(context).textTheme.textStyle.color ?? CupertinoColors.inactiveGray,
width: 1,
),
borderRadius: BorderRadius.circular(20),
),
child: Padding(
padding: const EdgeInsets.all(4),
child: Text(
currentVersionText,
style: TextStyle(
inherit: true,
),
),
),
),
if (remoteChangelog.isNotEmpty && log.version == remoteChangelog.first.version && (localChangelog.isEmpty || localChangelog.first.version != log.version))
Container(
decoration: BoxDecoration(
border: Border.all(
color: CupertinoColors.activeGreen,
width: 1,
),
borderRadius: BorderRadius.circular(20),
),
child: Padding(
padding: const EdgeInsets.all(4),
child: Text(
latestVersionText,
style: TextStyle(
inherit: true,
color: CupertinoColors.activeGreen,
),
),
),
),
if (AboutPageState.DOWNLOAD == 'apk' && log.apkLink != null)
CupertinoButton(
padding: EdgeInsets.all(4),
minSize: 0,
onPressed: () {
launchUrl(
log.apkLink!,
mode: LaunchMode.externalApplication,
);
},
child: Icon(CupertinoIcons.arrow_down_circle),
),
],
),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: RichText(
text: TextSpan(
text: log.description,
),
),
),
CupertinoDivider(),
],
],
),
);
}
),
);
}
}