Merge pull request #340 from ImranR98/dev

UI Improvements (#330, #337)
This commit is contained in:
Imran Remtulla
2023-03-01 21:55:47 -05:00
committed by GitHub
3 changed files with 97 additions and 86 deletions

View File

@@ -21,7 +21,7 @@ import 'package:easy_localization/src/easy_localization_controller.dart';
// ignore: implementation_imports // ignore: implementation_imports
import 'package:easy_localization/src/localization.dart'; import 'package:easy_localization/src/localization.dart';
const String currentVersion = '0.11.5'; const String currentVersion = '0.11.6';
const String currentReleaseTag = const String currentReleaseTag =
'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES 'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES

View File

@@ -233,6 +233,31 @@ class AppsPageState extends State<AppsPage> {
.getSource(listedApps[index].app.url) .getSource(listedApps[index].app.url)
.changeLogPageFromStandardUrl(listedApps[index].app.url); .changeLogPageFromStandardUrl(listedApps[index].app.url);
var transparent = const Color.fromARGB(0, 0, 0, 0).value; var transparent = const Color.fromARGB(0, 0, 0, 0).value;
var hasUpdate = listedApps[index].app.installedVersion != null &&
listedApps[index].app.installedVersion !=
listedApps[index].app.latestVersion;
var updateButton = IconButton(
visualDensity: VisualDensity.compact,
color: Theme.of(context).colorScheme.primary,
tooltip:
listedApps[index].app.additionalSettings['trackOnly'] ==
true
? tr('markUpdated')
: tr('update'),
onPressed: appsProvider.areDownloadsRunning()
? null
: () {
appsProvider.downloadAndInstallLatestApps([
listedApps[index].app.id
], globalNavigatorKey.currentContext).catchError((e) {
showError(e, context);
});
},
icon: Icon(
listedApps[index].app.additionalSettings['trackOnly'] ==
true
? Icons.check_circle_outline
: Icons.install_mobile));
return Container( return Container(
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border.symmetric( border: Border.symmetric(
@@ -264,7 +289,22 @@ class AppsPageState extends State<AppsPage> {
listedApps[index].installedInfo!.icon!, listedApps[index].installedInfo!.icon!,
gaplessPlayback: true, gaplessPlayback: true,
) )
: null, : Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Transform(
alignment: Alignment.center,
transform: Matrix4.rotationZ(0.31),
child: Image(
image: const AssetImage(
'assets/graphics/icon.png'),
color: Colors.white.withOpacity(0.1),
colorBlendMode: BlendMode.modulate,
gaplessPlayback: true,
),
),
]),
title: Text( title: Text(
maxLines: 1, maxLines: 1,
listedApps[index].installedInfo?.name ?? listedApps[index].installedInfo?.name ??
@@ -278,21 +318,33 @@ class AppsPageState extends State<AppsPage> {
), ),
subtitle: Text( subtitle: Text(
tr('byX', args: [listedApps[index].app.author]), tr('byX', args: [listedApps[index].app.author]),
maxLines: 1,
style: TextStyle( style: TextStyle(
overflow: TextOverflow.ellipsis,
fontWeight: listedApps[index].app.pinned fontWeight: listedApps[index].app.pinned
? FontWeight.bold ? FontWeight.bold
: FontWeight.normal)), : FontWeight.normal)),
trailing: SingleChildScrollView( trailing: listedApps[index].downloadProgress != null
reverse: true, ? Text(tr('percentProgress', args: [
child: listedApps[index].downloadProgress != null listedApps[index]
? Text(tr('percentProgress', args: [ .downloadProgress
listedApps[index] ?.toInt()
.downloadProgress .toString() ??
?.toInt() '100'
.toString() ?? ]))
'100' : (Row(
])) mainAxisSize: MainAxisSize.min,
: (Column( crossAxisAlignment: CrossAxisAlignment.start,
children: [
hasUpdate
? updateButton
: const SizedBox.shrink(),
hasUpdate
? const SizedBox(
width: 10,
)
: const SizedBox.shrink(),
Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
@@ -306,80 +358,38 @@ class AppsPageState extends State<AppsPage> {
'${listedApps[index].app.installedVersion ?? tr('notInstalled')}${listedApps[index].app.additionalSettings['trackOnly'] == true ? ' ${tr('estimateInBrackets')}' : ''}', '${listedApps[index].app.installedVersion ?? tr('notInstalled')}${listedApps[index].app.additionalSettings['trackOnly'] == true ? ' ${tr('estimateInBrackets')}' : ''}',
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
textAlign: TextAlign.end, textAlign: TextAlign.end,
)) )),
]), ]),
GestureDetector( Row(
onTap: changesUrl == null mainAxisSize: MainAxisSize.min,
? null children: [
: () { GestureDetector(
launchUrlString(changesUrl, onTap: changesUrl == null
mode: LaunchMode ? null
.externalApplication); : () {
}, launchUrlString(changesUrl,
child: Text( mode: LaunchMode
listedApps[index].app.releaseDate == .externalApplication);
null },
? tr('changes') child: Text(
: DateFormat('yyyy-MM-dd').format( listedApps[index].app.releaseDate ==
listedApps[index] null
.app ? tr('changes')
.releaseDate!), : DateFormat('yyyy-MM-dd')
style: const TextStyle( .format(listedApps[index]
fontStyle: FontStyle.italic, .app
decoration: .releaseDate!),
TextDecoration.underline), style: const TextStyle(
)), fontStyle: FontStyle.italic,
listedApps[index].app.installedVersion != decoration:
null && TextDecoration.underline),
listedApps[index] ))
.app ],
.installedVersion != ),
listedApps[index]
.app
.latestVersion
? appsProvider.areDownloadsRunning()
? Text(tr('pleaseWait'))
: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.end,
children: [
GestureDetector(
onTap: () {
appsProvider
.downloadAndInstallLatestApps(
[
listedApps[index]
.app
.id
],
globalNavigatorKey
.currentContext).catchError(
(e) {
showError(e, context);
});
},
child: Text(
listedApps[index]
.app
.additionalSettings[
'trackOnly'] ==
true
? tr('markUpdated')
: tr('update'),
style: TextStyle(
color:
Theme.of(context)
.colorScheme
.primary,
fontWeight:
FontWeight.bold),
)),
],
)
: const SizedBox.shrink(),
], ],
))), )
],
)),
onTap: () { onTap: () {
if (selectedApps.isNotEmpty) { if (selectedApps.isNotEmpty) {
toggleAppSelected(listedApps[index].app); toggleAppSelected(listedApps[index].app);

View File

@@ -17,7 +17,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts # In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix. # of the product and file versions while build-number is used as the build suffix.
version: 0.11.5+124 # When changing this, update the tag in main() accordingly version: 0.11.6+125 # When changing this, update the tag in main() accordingly
environment: environment:
sdk: '>=2.18.2 <3.0.0' sdk: '>=2.18.2 <3.0.0'
@@ -97,6 +97,7 @@ flutter:
assets: assets:
- assets/translations/ - assets/translations/
- assets/graphics/
# An image asset can refer to one or more resolution-specific "variants", see # An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware # https://flutter.dev/assets-and-images/#resolution-aware