diff --git a/lib/ui/views/installer/installer_view.dart b/lib/ui/views/installer/installer_view.dart index 22bbdd4b..0d5195e9 100644 --- a/lib/ui/views/installer/installer_view.dart +++ b/lib/ui/views/installer/installer_view.dart @@ -18,130 +18,133 @@ class InstallerView extends StatelessWidget { onModelReady: (model) => model.initialize(context), viewModelBuilder: () => InstallerViewModel(), builder: (context, model, child) => WillPopScope( - child: Scaffold( - body: CustomScrollView( - controller: model.scrollController, - slivers: [ - CustomSliverAppBar( - title: Text( - model.headerLogs, - style: GoogleFonts.inter( - color: Theme.of(context).textTheme.headline6!.color, - ), - ), - onBackButtonPressed: () => model.onWillPop(context), - actions: [ - Visibility( - visible: !model.isPatching && !model.hasErrors, - child: CustomPopupMenu( - onSelected: (value) => model.onMenuSelection(value), - children: { - 0: I18nText( - 'installerView.shareApkMenuOption', - child: const Text( - '', - style: TextStyle( - fontWeight: FontWeight.bold, - ), - ), - ), - 1: I18nText( - 'installerView.shareLogMenuOption', - child: const Text( - '', - style: TextStyle( - fontWeight: FontWeight.bold, - ), - ), - ), - }, + child: SafeArea( + top: false, + child: Scaffold( + body: CustomScrollView( + controller: model.scrollController, + slivers: [ + CustomSliverAppBar( + title: Text( + model.headerLogs, + style: GoogleFonts.inter( + color: Theme.of(context).textTheme.headline6!.color, ), ), - ], - bottom: PreferredSize( - preferredSize: const Size(double.infinity, 1.0), - child: - GradientProgressIndicator(progress: model.progress!)), - ), - SliverPadding( - padding: const EdgeInsets.all(20.0), - sliver: SliverList( - delegate: SliverChildListDelegate.fixed( - [ - CustomCard( - child: Text( - model.logs, - style: GoogleFonts.jetBrainsMono( - fontSize: 13, - height: 1.5, + onBackButtonPressed: () => model.onWillPop(context), + actions: [ + Visibility( + visible: !model.isPatching && !model.hasErrors, + child: CustomPopupMenu( + onSelected: (value) => model.onMenuSelection(value), + children: { + 0: I18nText( + 'installerView.shareApkMenuOption', + child: const Text( + '', + style: TextStyle( + fontWeight: FontWeight.bold, + ), + ), + ), + 1: I18nText( + 'installerView.shareLogMenuOption', + child: const Text( + '', + style: TextStyle( + fontWeight: FontWeight.bold, + ), + ), + ), + }, + ), + ), + ], + bottom: PreferredSize( + preferredSize: const Size(double.infinity, 1.0), + child: + GradientProgressIndicator(progress: model.progress!)), + ), + SliverPadding( + padding: const EdgeInsets.all(20.0), + sliver: SliverList( + delegate: SliverChildListDelegate.fixed( + [ + CustomCard( + child: Text( + model.logs, + style: GoogleFonts.jetBrainsMono( + fontSize: 13, + height: 1.5, + ), ), ), - ), - ], + ], + ), ), ), - ), - SliverFillRemaining( - hasScrollBody: false, - child: Align( - alignment: Alignment.bottomCenter, - child: Visibility( - visible: !model.isPatching && !model.hasErrors, - child: Padding( - padding: const EdgeInsets.all(20.0).copyWith(top: 0.0), - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Visibility( - visible: model.isInstalled, - child: CustomMaterialButton( - label: I18nText('installerView.openButton'), - isExpanded: true, - onPressed: () { - model.openApp(); - model.cleanPatcher(); - Navigator.of(context).pop(); - }, - ), - ), - Visibility( - visible: !model.isInstalled && model.isRooted, - child: CustomMaterialButton( - isFilled: false, - label: - I18nText('installerView.installRootButton'), - isExpanded: true, - onPressed: () => model.installResult( - context, - true, + SliverFillRemaining( + hasScrollBody: false, + child: Align( + alignment: Alignment.bottomCenter, + child: Visibility( + visible: !model.isPatching && !model.hasErrors, + child: Padding( + padding: const EdgeInsets.all(20.0).copyWith(top: 0.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Visibility( + visible: model.isInstalled, + child: CustomMaterialButton( + label: I18nText('installerView.openButton'), + isExpanded: true, + onPressed: () { + model.openApp(); + model.cleanPatcher(); + Navigator.of(context).pop(); + }, ), ), - ), - Visibility( - visible: !model.isInstalled, - child: const SizedBox( - width: 16, - ), - ), - Visibility( - visible: !model.isInstalled, - child: CustomMaterialButton( - label: I18nText('installerView.installButton'), - isExpanded: true, - onPressed: () => model.installResult( - context, - false, + Visibility( + visible: !model.isInstalled && model.isRooted, + child: CustomMaterialButton( + isFilled: false, + label: + I18nText('installerView.installRootButton'), + isExpanded: true, + onPressed: () => model.installResult( + context, + true, + ), ), ), - ), - ], + Visibility( + visible: !model.isInstalled, + child: const SizedBox( + width: 16, + ), + ), + Visibility( + visible: !model.isInstalled, + child: CustomMaterialButton( + label: I18nText('installerView.installButton'), + isExpanded: true, + onPressed: () => model.installResult( + context, + false, + ), + ), + ), + ], + ), ), ), ), ), - ), - ], + ], + ), ), ), onWillPop: () => model.onWillPop(context),