[mob][photos] Redesign app bar of subscription screen

This commit is contained in:
ashilkn 2024-07-26 13:29:33 +05:30
parent af42c42141
commit f01b3b9def
2 changed files with 98 additions and 61 deletions

View File

@ -1,7 +1,6 @@
import 'dart:async';
import 'dart:io';
import "package:flutter/cupertino.dart";
import "package:flutter/foundation.dart";
import 'package:flutter/material.dart';
import 'package:in_app_purchase/in_app_purchase.dart';
@ -22,6 +21,7 @@ import 'package:photos/ui/common/loading_widget.dart';
import 'package:photos/ui/common/progress_dialog.dart';
import "package:photos/ui/components/captioned_text_widget.dart";
import "package:photos/ui/components/menu_item_widget/menu_item_widget.dart";
import "package:photos/ui/components/title_bar_title_widget.dart";
import 'package:photos/ui/payment/child_subscription_widget.dart';
import 'package:photos/ui/payment/skip_subscription_widget.dart';
import 'package:photos/ui/payment/subscription_common_widgets.dart';
@ -37,8 +37,8 @@ class StoreSubscriptionPage extends StatefulWidget {
const StoreSubscriptionPage({
this.isOnboarding = false,
Key? key,
}) : super(key: key);
super.key,
});
@override
State<StoreSubscriptionPage> createState() => _StoreSubscriptionPageState();
@ -155,6 +155,7 @@ class _StoreSubscriptionPageState extends State<StoreSubscriptionPage> {
@override
Widget build(BuildContext context) {
final textTheme = getEnteTextTheme(context);
colorScheme = getEnteColorScheme(context);
if (!_isLoading) {
_isLoading = true;
@ -168,7 +169,38 @@ class _StoreSubscriptionPageState extends State<StoreSubscriptionPage> {
);
return Scaffold(
appBar: appBar,
body: _getBody(),
body: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TitleBarTitleWidget(
title:
widget.isOnboarding ? "Select your plan" : "Subscription",
),
widget.isOnboarding
? Text(
"Ente preserves your memories, so theyre always available to you, even if you lose your device.",
style: textTheme.smallMuted,
)
: _isFreePlanUser()
? const SizedBox.shrink()
: Text(
convertBytesToReadableFormat(
// _userDetails.getTotalStorage(),
1234,
),
style: textTheme.smallMuted,
),
],
),
),
_getBody(),
],
),
);
}

View File

@ -1,7 +1,5 @@
import 'dart:async';
import "package:flutter/cupertino.dart";
import "package:flutter/foundation.dart";
import 'package:flutter/material.dart';
import "package:logging/logging.dart";
import 'package:photos/ente_theme_data.dart';
@ -14,13 +12,13 @@ import "package:photos/services/update_service.dart";
import 'package:photos/services/user_service.dart';
import "package:photos/theme/colors.dart";
import 'package:photos/theme/ente_theme.dart';
import 'package:photos/ui/common/bottom_shadow.dart';
import 'package:photos/ui/common/loading_widget.dart';
import 'package:photos/ui/common/progress_dialog.dart';
import 'package:photos/ui/common/web_page.dart';
import 'package:photos/ui/components/buttons/button_widget.dart';
import "package:photos/ui/components/captioned_text_widget.dart";
import "package:photos/ui/components/menu_item_widget/menu_item_widget.dart";
import "package:photos/ui/components/title_bar_title_widget.dart";
import 'package:photos/ui/payment/child_subscription_widget.dart';
import 'package:photos/ui/payment/payment_web_page.dart';
import 'package:photos/ui/payment/skip_subscription_widget.dart';
@ -38,8 +36,8 @@ class StripeSubscriptionPage extends StatefulWidget {
const StripeSubscriptionPage({
this.isOnboarding = false,
Key? key,
}) : super(key: key);
super.key,
});
@override
State<StripeSubscriptionPage> createState() => _StripeSubscriptionPageState();
@ -64,11 +62,6 @@ class _StripeSubscriptionPageState extends State<StripeSubscriptionPage> {
EnteColorScheme colorScheme = darkScheme;
final Logger logger = Logger("StripeSubscriptionPage");
@override
void initState() {
super.initState();
}
Future<void> _fetchSub() async {
return _userService
.getUserDetailsV2(memoryCount: false)
@ -127,59 +120,71 @@ class _StripeSubscriptionPageState extends State<StripeSubscriptionPage> {
}
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
colorScheme = getEnteColorScheme(context);
final appBar = PreferredSize(
preferredSize: const Size(double.infinity, 60),
child: Container(
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Theme.of(context).colorScheme.background,
blurRadius: 16,
offset: const Offset(0, 8),
),
],
),
child: widget.isOnboarding
? AppBar(
elevation: 0,
title: Hero(
tag: "subscription",
child: StepProgressIndicator(
totalSteps: 4,
currentStep: 4,
selectedColor:
Theme.of(context).colorScheme.greenAlternative,
roundedEdges: const Radius.circular(10),
unselectedColor: Theme.of(context)
.colorScheme
.stepProgressUnselectedColor,
),
),
)
: AppBar(
elevation: 0,
title: Text("${S.of(context).subscription}${kDebugMode ? ' '
'Stripe' : ''}"),
),
),
);
final textTheme = getEnteTextTheme(context);
return Scaffold(
appBar: appBar,
body: Stack(
alignment: Alignment.bottomCenter,
appBar: widget.isOnboarding
? AppBar(
scrolledUnderElevation: 0,
elevation: 0,
title: Hero(
tag: "subscription",
child: StepProgressIndicator(
totalSteps: 4,
currentStep: 4,
selectedColor: Theme.of(context).colorScheme.greenAlternative,
roundedEdges: const Radius.circular(10),
unselectedColor:
Theme.of(context).colorScheme.stepProgressUnselectedColor,
),
),
)
: AppBar(
scrolledUnderElevation: 0,
toolbarHeight: 48,
leadingWidth: 48,
leading: GestureDetector(
onTap: () {
Navigator.pop(context);
},
child: const Icon(
Icons.arrow_back_outlined,
),
),
),
body: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_getBody(),
const BottomShadowWidget(
offsetDy: 40,
Padding(
padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TitleBarTitleWidget(
title:
widget.isOnboarding ? "Select your plan" : "Subscription",
),
widget.isOnboarding
? Text(
"Ente preserves your memories, so theyre always available to you, even if you lose your device.",
style: textTheme.smallMuted,
)
: _isFreePlanUser()
? const SizedBox.shrink()
: Text(
convertBytesToReadableFormat(
// _userDetails.getTotalStorage(),
1234,
),
style: textTheme.smallMuted,
),
],
),
),
Expanded(child: _getBody()),
],
),
);