From 0a2a495ab0dbdb4d15616c45f888315a8e36277e Mon Sep 17 00:00:00 2001 From: Aunali321 Date: Fri, 16 Sep 2022 03:46:46 +0530 Subject: [PATCH] feat: custom animated progressbar. --- lib/ui/views/installer/installer_view.dart | 12 +++---- .../gradient_progress_indicator.dart | 32 +++++++++++++++++++ 2 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 lib/ui/widgets/installerView/gradient_progress_indicator.dart diff --git a/lib/ui/views/installer/installer_view.dart b/lib/ui/views/installer/installer_view.dart index b98da9f1..5a3c2962 100644 --- a/lib/ui/views/installer/installer_view.dart +++ b/lib/ui/views/installer/installer_view.dart @@ -3,6 +3,7 @@ import 'package:flutter_i18n/flutter_i18n.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:revanced_manager/ui/views/installer/installer_viewmodel.dart'; import 'package:revanced_manager/ui/widgets/installerView/custom_material_button.dart'; +import 'package:revanced_manager/ui/widgets/installerView/gradient_progress_indicator.dart'; import 'package:revanced_manager/ui/widgets/shared/custom_card.dart'; import 'package:revanced_manager/ui/widgets/shared/custom_popup_menu.dart'; import 'package:revanced_manager/ui/widgets/shared/custom_sliver_app_bar.dart'; @@ -57,14 +58,9 @@ class InstallerView extends StatelessWidget { ), ], bottom: PreferredSize( - preferredSize: const Size(double.infinity, 1.0), - child: LinearProgressIndicator( - color: Theme.of(context).colorScheme.primary, - backgroundColor: - Theme.of(context).colorScheme.primaryContainer, - value: model.progress, - ), - ), + preferredSize: const Size(double.infinity, 1.0), + child: + GradientProgressIndicator(progress: model.progress!)), ), SliverPadding( padding: const EdgeInsets.all(20.0), diff --git a/lib/ui/widgets/installerView/gradient_progress_indicator.dart b/lib/ui/widgets/installerView/gradient_progress_indicator.dart new file mode 100644 index 00000000..f6d8f67e --- /dev/null +++ b/lib/ui/widgets/installerView/gradient_progress_indicator.dart @@ -0,0 +1,32 @@ +import 'package:flutter/material.dart'; + +class GradientProgressIndicator extends StatefulWidget { + final double? progress; + const GradientProgressIndicator({required this.progress, super.key}); + + @override + State createState() => + _GradientProgressIndicatorState(); +} + +class _GradientProgressIndicatorState extends State { + @override + Widget build(BuildContext context) { + return Align( + alignment: Alignment.centerLeft, + child: AnimatedContainer( + duration: const Duration(milliseconds: 500), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + Theme.of(context).colorScheme.primary, + Theme.of(context).colorScheme.secondary, + ], + ), + ), + height: 5, + width: MediaQuery.of(context).size.width * widget.progress!, + ), + ); + } +}