diff --git a/filcnaplo/android/app/src/main/AndroidManifest.xml b/filcnaplo/android/app/src/main/AndroidManifest.xml index e22004e..c492f32 100644 --- a/filcnaplo/android/app/src/main/AndroidManifest.xml +++ b/filcnaplo/android/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ + android:requestLegacyExternalStorage="true" android:enableOnBackInvokedCallback="true"> items; final TabController controller; @@ -22,6 +23,7 @@ class FilterBar extends StatefulWidget implements PreferredSizeWidget { final bool disableFading; final bool scrollable; final bool censored; + final TabAlignment tabAlignment; @override final Size preferredSize = const Size.fromHeight(42.0); @@ -36,7 +38,9 @@ class _FilterBarState extends State { void initState() { super.initState(); - censoredItemsWidth = List.generate(widget.items.length, (index) => 25 + Random().nextDouble() * 50).toList(); + censoredItemsWidth = List.generate( + widget.items.length, (index) => 25 + Random().nextDouble() * 50) + .toList(); } @override @@ -66,18 +70,21 @@ class _FilterBarState extends State { tabs: widget.censored ? censoredItemsWidth .map( - (e) => Container( - width: e, - height: 15, - decoration: BoxDecoration( - color: AppColors.of(context).text.withOpacity(.45), - borderRadius: BorderRadius.circular(8.0), + (e) => Tab( + child: Container( + width: e, + height: 15, + decoration: BoxDecoration( + color: AppColors.of(context).text.withOpacity(.45), + borderRadius: BorderRadius.circular(8.0), + ), ), ), ) .toList() : widget.items, onTap: widget.onTap, + tabAlignment: widget.tabAlignment, ); return Container( @@ -92,19 +99,26 @@ class _FilterBarState extends State { // avoid fading over selected tab return ShaderMask( shaderCallback: (Rect bounds) { - final Color bg = Theme.of(context).scaffoldBackgroundColor; + final Color bg = + Theme.of(context).scaffoldBackgroundColor; final double index = widget.controller.animation!.value; - return LinearGradient(begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ - index < 0.2 ? Colors.transparent : bg, - Colors.transparent, - Colors.transparent, - index > widget.controller.length - 1.2 ? Colors.transparent : bg - ], stops: const [ - 0, - 0.1, - 0.9, - 1 - ]).createShader(bounds); + return LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + index < 0.2 ? Colors.transparent : bg, + Colors.transparent, + Colors.transparent, + index > widget.controller.length - 1.2 + ? Colors.transparent + : bg + ], + stops: const [ + 0, + 0.1, + 0.9, + 1 + ]).createShader(bounds); }, blendMode: BlendMode.dstOut, child: child); diff --git a/filcnaplo_mobile_ui/lib/pages/grades/grade_subject_view.dart b/filcnaplo_mobile_ui/lib/pages/grades/grade_subject_view.dart index f5ddf00..46b12df 100755 --- a/filcnaplo_mobile_ui/lib/pages/grades/grade_subject_view.dart +++ b/filcnaplo_mobile_ui/lib/pages/grades/grade_subject_view.dart @@ -229,11 +229,9 @@ class _GradeSubjectViewState extends State { .where((e) => e.type == GradeType.midYear) .isNotEmpty, child: ExpandableFab( - overlayStyle: ExpandableFabOverlayStyle( - color: Theme.of(context).colorScheme.secondary, - ), type: ExpandableFabType.up, distance: 50, + childrenOffset: const Offset(-3.8, 0.0), children: [ FloatingActionButton.small( heroTag: "btn_ghost_grades",