mirror of
https://github.com/vodemn/m3_lightmeter.git
synced 2024-11-25 17:00:39 +00:00
dim paid features list tiles
This commit is contained in:
parent
6d1be75070
commit
690badccd2
2 changed files with 20 additions and 22 deletions
|
@ -2,15 +2,18 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:lightmeter/data/models/feature.dart';
|
import 'package:lightmeter/data/models/feature.dart';
|
||||||
import 'package:lightmeter/generated/l10n.dart';
|
import 'package:lightmeter/generated/l10n.dart';
|
||||||
import 'package:lightmeter/providers/remote_config_provider.dart';
|
import 'package:lightmeter/providers/remote_config_provider.dart';
|
||||||
import 'package:lightmeter/screens/settings/components/shared/iap_list_tile/widget_list_tile_iap.dart';
|
import 'package:lightmeter/res/dimens.dart';
|
||||||
import 'package:lightmeter/screens/settings/components/utils/show_buy_pro_dialog.dart';
|
import 'package:lightmeter/screens/settings/components/utils/show_buy_pro_dialog.dart';
|
||||||
|
import 'package:m3_lightmeter_iap/m3_lightmeter_iap.dart';
|
||||||
|
|
||||||
class BuyProListTile extends StatelessWidget {
|
class BuyProListTile extends StatelessWidget {
|
||||||
const BuyProListTile({super.key});
|
const BuyProListTile({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return IAPListTile(
|
final status = IAPProducts.productOf(context, IAPProductType.paidFeatures)?.status;
|
||||||
|
final isPending = status == IAPProductStatus.purchased || status == null;
|
||||||
|
return ListTile(
|
||||||
leading: const Icon(Icons.star),
|
leading: const Icon(Icons.star),
|
||||||
title: Text(
|
title: Text(
|
||||||
RemoteConfig.isEnabled(context, Feature.unlockProFeaturesText)
|
RemoteConfig.isEnabled(context, Feature.unlockProFeaturesText)
|
||||||
|
@ -20,7 +23,13 @@ class BuyProListTile extends StatelessWidget {
|
||||||
onTap: () {
|
onTap: () {
|
||||||
showBuyProDialog(context);
|
showBuyProDialog(context);
|
||||||
},
|
},
|
||||||
showPendingTrailing: true,
|
trailing: isPending
|
||||||
|
? const SizedBox(
|
||||||
|
height: Dimens.grid24,
|
||||||
|
width: Dimens.grid24,
|
||||||
|
child: CircularProgressIndicator(),
|
||||||
|
)
|
||||||
|
: null,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:lightmeter/res/dimens.dart';
|
import 'package:lightmeter/res/dimens.dart';
|
||||||
import 'package:lightmeter/screens/settings/components/utils/show_buy_pro_dialog.dart';
|
|
||||||
import 'package:m3_lightmeter_iap/m3_lightmeter_iap.dart';
|
import 'package:m3_lightmeter_iap/m3_lightmeter_iap.dart';
|
||||||
|
|
||||||
/// Depends on the product status and replaces [onTap] with purchase callback
|
/// Depends on the product status and replaces [onTap] with purchase callback
|
||||||
|
@ -23,24 +22,14 @@ class IAPListTile extends StatelessWidget {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final status = IAPProducts.productOf(context, IAPProductType.paidFeatures)?.status;
|
final isPurchased = IAPProducts.isPurchased(context, IAPProductType.paidFeatures);
|
||||||
final isPending = status == IAPProductStatus.purchased || status == null;
|
return Opacity(
|
||||||
return ListTile(
|
opacity: isPurchased ? Dimens.enabledOpacity : Dimens.disabledOpacity,
|
||||||
|
child: ListTile(
|
||||||
leading: leading,
|
leading: leading,
|
||||||
title: title,
|
title: title,
|
||||||
onTap: switch (status) {
|
onTap: isPurchased ? onTap : null,
|
||||||
IAPProductStatus.purchasable => () => showBuyProDialog(context),
|
),
|
||||||
IAPProductStatus.pending => null,
|
|
||||||
IAPProductStatus.purchased => onTap,
|
|
||||||
null => null,
|
|
||||||
},
|
|
||||||
trailing: showPendingTrailing && isPending
|
|
||||||
? const SizedBox(
|
|
||||||
height: Dimens.grid24,
|
|
||||||
width: Dimens.grid24,
|
|
||||||
child: CircularProgressIndicator(),
|
|
||||||
)
|
|
||||||
: null,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue