completed new plus popup when feature unavailable :3

This commit is contained in:
Kima 2024-03-23 22:41:20 +01:00
parent 1757e16dea
commit 161f61ea96
20 changed files with 70 additions and 24 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -0,0 +1,43 @@
<svg width="375" height="174" viewBox="0 0 375 174" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_581_2504)">
<g style="mix-blend-mode:color-burn">
<rect x="138.881" y="36.8047" width="50.4482" height="50.4482" stroke="black"/>
<rect x="189.186" y="36.8047" width="50.4482" height="50.4482" stroke="black"/>
<rect x="138.881" y="-13.5" width="50.4482" height="50.4482" stroke="black"/>
<rect x="189.186" y="-13.5" width="50.4482" height="50.4482" stroke="black"/>
<rect x="239.49" y="36.8047" width="49.3049" height="50.4482" stroke="black"/>
<rect x="288.652" y="36.8047" width="50.4482" height="50.4482" stroke="black"/>
<rect x="239.49" y="-13.5" width="49.3049" height="50.4482" stroke="black"/>
<rect x="288.652" y="-13.5" width="50.4482" height="50.4482" stroke="black"/>
<rect x="138.881" y="136.271" width="50.4482" height="50.4482" stroke="black"/>
<rect x="189.186" y="136.271" width="50.4482" height="50.4482" stroke="black"/>
<rect x="138.881" y="87.1099" width="50.4482" height="49.3049" stroke="black"/>
<rect x="189.186" y="87.1099" width="50.4482" height="49.3049" stroke="black"/>
<rect x="239.49" y="136.271" width="49.3049" height="50.4482" stroke="black"/>
<rect x="288.652" y="136.271" width="50.4482" height="50.4482" stroke="black"/>
<rect x="239.49" y="87.1099" width="49.3049" height="49.3049" stroke="black"/>
<rect x="288.652" y="87.1099" width="50.4482" height="49.3049" stroke="black"/>
<rect x="338.957" y="36.8047" width="50.4482" height="50.4482" stroke="black"/>
<rect x="338.957" y="-13.5" width="50.4482" height="50.4482" stroke="black"/>
<rect x="338.957" y="136.271" width="50.4482" height="50.4482" stroke="black"/>
<rect x="338.957" y="87.1099" width="50.4482" height="49.3049" stroke="black"/>
<rect x="-10.8906" y="36.8047" width="49.3049" height="50.4482" stroke="black"/>
<rect x="38.2705" y="36.8047" width="50.4482" height="50.4482" stroke="black"/>
<rect x="-10.8906" y="-13.5" width="49.3049" height="50.4482" stroke="black"/>
<rect x="38.2705" y="-13.5" width="50.4482" height="50.4482" stroke="black"/>
<rect x="-10.8906" y="136.271" width="49.3049" height="50.4482" stroke="black"/>
<rect x="38.2705" y="136.271" width="50.4482" height="50.4482" stroke="black"/>
<rect x="-10.8906" y="87.1099" width="49.3049" height="49.3049" stroke="black"/>
<rect x="38.2705" y="87.1099" width="50.4482" height="49.3049" stroke="black"/>
<rect x="88.5762" y="36.8047" width="50.4482" height="50.4482" stroke="black"/>
<rect x="88.5762" y="-13.5" width="50.4482" height="50.4482" stroke="black"/>
<rect x="88.5762" y="136.271" width="50.4482" height="50.4482" stroke="black"/>
<rect x="88.5762" y="87.1099" width="50.4482" height="49.3049" stroke="black"/>
</g>
</g>
<defs>
<clipPath id="clip0_581_2504">
<rect width="375" height="173.78" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -101,6 +101,7 @@ flutter:
- assets/images/ext_logo/ - assets/images/ext_logo/
- assets/svg/menu_icons/ - assets/svg/menu_icons/
- assets/other/dirtywords.xml - assets/other/dirtywords.xml
- assets/svg/mesh_bg.svg
fonts: fonts:
- family: FilcIcons - family: FilcIcons

View File

@ -52,6 +52,7 @@ Future<T?> showRoundedModalBottomSheet<T>(
BuildContext context, { BuildContext context, {
required Widget child, required Widget child,
bool rootNavigator = true, bool rootNavigator = true,
bool showHandle = true,
}) async { }) async {
return await showModalBottomSheet<T>( return await showModalBottomSheet<T>(
context: context, context: context,
@ -59,7 +60,11 @@ Future<T?> showRoundedModalBottomSheet<T>(
elevation: 0, elevation: 0,
isDismissible: true, isDismissible: true,
useRootNavigator: rootNavigator, useRootNavigator: rootNavigator,
builder: (context) => RoundedBottomSheet(child: child)); builder: (context) => RoundedBottomSheet(
showHandle: false,
child: child,
),
);
} }
PersistentBottomSheetController showRoundedBottomSheet( PersistentBottomSheetController showRoundedBottomSheet(

View File

@ -8,21 +8,18 @@ extension Localization on String {
"date": "Date", "date": "Date",
"description": "Description", "description": "Description",
"mode": "Type", "mode": "Type",
"Nem írt": "Missed exam",
}, },
"hu_hu": { "hu_hu": {
"value": "Érték", "value": "Érték",
"date": "Írás ideje", "date": "Írás ideje",
"description": "Leírás", "description": "Leírás",
"mode": "Típus", "mode": "Típus",
"Nem írt": "Nem írta meg a dolgozatot"
}, },
"de_de": { "de_de": {
"value": "Notenwert", "value": "Notenwert",
"date": "Prüfungszeit", "date": "Prüfungszeit",
"description": "Bezeichnung", "description": "Bezeichnung",
"mode": "Typ", "mode": "Typ",
"Nem írt": "Nicht geschrieben"
} }
}; };

View File

@ -55,7 +55,7 @@ class AverageSelectorState extends State<AverageSelector> {
}); });
} }
// } else { // } else {
// PremiumLockedFeatureUpsell.show( // PlusLockedFeaturePopup.show(
// context: context, feature: PremiumFeature.gradestats); // context: context, feature: PremiumFeature.gradestats);
// } // }
}, },

View File

@ -248,7 +248,7 @@ class _GradeSubjectViewState extends State<GradeSubjectView> {
onPressed: () { onPressed: () {
// if (!Provider.of<PremiumProvider>(context, listen: false) // if (!Provider.of<PremiumProvider>(context, listen: false)
// .hasScope(PremiumScopes.goalPlanner)) { // .hasScope(PremiumScopes.goalPlanner)) {
// PremiumLockedFeatureUpsell.show( // PlusLockedFeaturePopup.show(
// context: context, feature: PremiumFeature.goalplanner); // context: context, feature: PremiumFeature.goalplanner);
// return; // return;
// } // }

View File

@ -515,7 +515,7 @@ class GradesPageState extends State<GradesPage> {
if (!Provider.of<PremiumProvider>(context, if (!Provider.of<PremiumProvider>(context,
listen: false) listen: false)
.hasScope(PremiumScopes.totalGradeCalculator)) { .hasScope(PremiumScopes.totalGradeCalculator)) {
PremiumLockedFeatureUpsell.show( PlusLockedFeaturePopup.show(
context: context, context: context,
feature: PremiumFeature.gradeCalculation); feature: PremiumFeature.gradeCalculation);
return; return;

View File

@ -223,7 +223,7 @@ class NotesPageState extends State<NotesPage> with TickerProviderStateMixin {
listen: false) listen: false)
.hasScope(PremiumScopes.unlimitedSelfNotes) && .hasScope(PremiumScopes.unlimitedSelfNotes) &&
noteTiles.length > 10) { noteTiles.length > 10) {
return PremiumLockedFeatureUpsell.show( return PlusLockedFeaturePopup.show(
context: context, context: context,
feature: PremiumFeature.selfNotes); feature: PremiumFeature.selfNotes);
} }

View File

@ -216,7 +216,7 @@ class NotesScreenState extends State<NotesScreen> {
if (!Provider.of<PremiumProvider>(context, listen: false) if (!Provider.of<PremiumProvider>(context, listen: false)
.hasScope(PremiumScopes.unlimitedSelfNotes) && .hasScope(PremiumScopes.unlimitedSelfNotes) &&
noteTiles.length > 10) { noteTiles.length > 10) {
return PremiumLockedFeatureUpsell.show( return PlusLockedFeaturePopup.show(
context: context, feature: PremiumFeature.selfNotes); context: context, feature: PremiumFeature.selfNotes);
} }

View File

@ -35,7 +35,7 @@ class MenuRenamedSubjects extends StatelessWidget {
onPressed: () { onPressed: () {
// if (!Provider.of<PremiumProvider>(context, listen: false) // if (!Provider.of<PremiumProvider>(context, listen: false)
// .hasScope(PremiumScopes.renameSubjects)) { // .hasScope(PremiumScopes.renameSubjects)) {
// PremiumLockedFeatureUpsell.show( // PlusLockedFeaturePopup.show(
// context: context, feature: PremiumFeature.subjectrename); // context: context, feature: PremiumFeature.subjectrename);
// return; // return;
// } // }
@ -60,7 +60,7 @@ class MenuRenamedSubjects extends StatelessWidget {
onChanged: (v) async { onChanged: (v) async {
// if (!Provider.of<PremiumProvider>(context, listen: false) // if (!Provider.of<PremiumProvider>(context, listen: false)
// .hasScope(PremiumScopes.renameSubjects)) { // .hasScope(PremiumScopes.renameSubjects)) {
// PremiumLockedFeatureUpsell.show( // PlusLockedFeaturePopup.show(
// context: context, feature: PremiumFeature.subjectrename); // context: context, feature: PremiumFeature.subjectrename);
// return; // return;
// } // }

View File

@ -411,7 +411,7 @@ class SettingsHelper {
onPressed: () { onPressed: () {
// if (!Provider.of<PremiumProvider>(context, listen: false) // if (!Provider.of<PremiumProvider>(context, listen: false)
// .hasScope(PremiumScopes.maxTwoAccounts)) { // .hasScope(PremiumScopes.maxTwoAccounts)) {
// PremiumLockedFeatureUpsell.show( // PlusLockedFeaturePopup.show(
// context: context, feature: PremiumFeature.moreAccounts); // context: context, feature: PremiumFeature.moreAccounts);
// return; // return;
// } // }
@ -419,7 +419,7 @@ class SettingsHelper {
// if ((accountTiles.length - 1 == 2) && // if ((accountTiles.length - 1 == 2) &&
// !Provider.of<PremiumProvider>(context, listen: false) // !Provider.of<PremiumProvider>(context, listen: false)
// .hasScope(PremiumScopes.noAccountLimit)) { // .hasScope(PremiumScopes.noAccountLimit)) {
// PremiumLockedFeatureUpsell.show( // PlusLockedFeaturePopup.show(
// context: context, feature: PremiumFeature.moreAccounts); // context: context, feature: PremiumFeature.moreAccounts);
// return; // return;
// } // }

View File

@ -487,7 +487,7 @@ class SettingsScreenState extends State<SettingsScreen>
// if (!Provider.of<PremiumProvider>(context, // if (!Provider.of<PremiumProvider>(context,
// listen: false) // listen: false)
// .hasScope(PremiumScopes.maxTwoAccounts)) { // .hasScope(PremiumScopes.maxTwoAccounts)) {
// PremiumLockedFeatureUpsell.show( // PlusLockedFeaturePopup.show(
// context: context, // context: context,
// feature: PremiumFeature.moreAccounts); // feature: PremiumFeature.moreAccounts);
// return; // return;

View File

@ -88,7 +88,7 @@ class ExtrasSettingsScreenState extends State<ExtrasSettingsScreen> {
onPressed: () async { onPressed: () async {
if (!Provider.of<PremiumProvider>(context, listen: false) if (!Provider.of<PremiumProvider>(context, listen: false)
.hasScope(PremiumScopes.customGradeRarities)) { .hasScope(PremiumScopes.customGradeRarities)) {
return PremiumLockedFeatureUpsell.show( return PlusLockedFeaturePopup.show(
context: context, context: context,
feature: PremiumFeature.gradeRarities); feature: PremiumFeature.gradeRarities);
} }

View File

@ -671,7 +671,7 @@ class PersonalizeSettingsScreenState extends State<PersonalizeSettingsScreen>
if (!Provider.of<PremiumProvider>(context, if (!Provider.of<PremiumProvider>(context,
listen: false) listen: false)
.hasScope(PremiumScopes.liveActivityColor)) { .hasScope(PremiumScopes.liveActivityColor)) {
PremiumLockedFeatureUpsell.show( PlusLockedFeaturePopup.show(
context: context, context: context,
feature: PremiumFeature.liveActivity, feature: PremiumFeature.liveActivity,
); );
@ -845,7 +845,7 @@ class PersonalizeSettingsScreenState extends State<PersonalizeSettingsScreen>
if (!Provider.of<PremiumProvider>(context, if (!Provider.of<PremiumProvider>(context,
listen: false) listen: false)
.hasScope(PremiumScopes.customFont)) { .hasScope(PremiumScopes.customFont)) {
PremiumLockedFeatureUpsell.show( PlusLockedFeaturePopup.show(
context: context, context: context,
feature: PremiumFeature.fontChange); feature: PremiumFeature.fontChange);
return; return;

View File

@ -744,7 +744,7 @@ class _PremiumCustomAccentColorSettingState
// _colorsTabController.animateTo(0, // _colorsTabController.animateTo(0,
// duration: Duration.zero); // duration: Duration.zero);
// PremiumLockedFeatureUpsell.show( // PlusLockedFeaturePopup.show(
// context: context, // context: context,
// feature: PremiumFeature // feature: PremiumFeature
// .customcolors); // .customcolors);

View File

@ -22,7 +22,7 @@ class UserMenuNickname extends StatelessWidget {
onPressed: () { onPressed: () {
// if (!Provider.of<PremiumProvider>(context, listen: false) // if (!Provider.of<PremiumProvider>(context, listen: false)
// .hasScope(PremiumScopes.nickname)) { // .hasScope(PremiumScopes.nickname)) {
// PremiumLockedFeatureUpsell.show( // PlusLockedFeaturePopup.show(
// context: context, feature: PremiumFeature.profile); // context: context, feature: PremiumFeature.profile);
// return; // return;
// } // }