This commit is contained in:
otsmr 2025-07-17 20:41:27 +02:00
parent 0c034c680f
commit 9115d5be74
9 changed files with 121 additions and 121 deletions

File diff suppressed because one or more lines are too long

View file

@ -162,6 +162,11 @@ class _AppMainWidgetState extends State<AppMainWidget> {
FutureBuilder<bool>(
future: userCreated,
builder: (context, snapshot) {
return OnboardingView(
callbackOnSuccess: () => setState(() {
showOnboarding = false;
}),
);
if (!snapshot.hasData) {
return Center(child: Container());
} else if (snapshot.data!) {

View file

@ -11,12 +11,12 @@
"onboardingSendTwonliesTitle": "twonlies senden",
"onboardingSendTwonliesBody": "Teile Momente sicher mit deinem Partner. twonly stellt sicher, dass nur dein Partner sie öffnen kann, sodass deine Momente mit deinem Partner eine two(o)nly Sache bleiben!",
"onboardingNotProductTitle": "Du bist nicht das Produkt!",
"onboardingNotProductBody": "twonly finanziert sich durch eine geringe monatliche Gebühr und nicht durch den Verkauf deiner Daten.",
"onboardingNotProductBody": "twonly wird durch Spenden und ein optionales Abonnement finanziert. Deine Daten werden niemals verkauft.",
"onboardingBuyOneGetTwoTitle": "Kaufe eins, bekomme zwei",
"onboardingBuyOneGetTwoBody": "twonly benötigt immer mindestens zwei Personen, daher erhältst du beim Kauf eine zweite kostenlose Lizenz für deinen twonly-Partner.",
"onboardingGetStartedTitle": "Auf geht's",
"onboardingGetStartedBody": "Du kannst twonly kostenlos im Preview-Modus testen. In diesem Modus kannst du von anderen gefunden werden und Bilder oder Videos empfangen, aber du kannst selbst keine senden.",
"onboardingTryForFree": "Kostenlos testen",
"onboardingTryForFree": "Jetzt registrieren",
"registerUsernameSlogan": "Bitte wähle einen Benutzernamen, damit dich andere finden können!",
"registerUsernameDecoration": "Benutzername",
"registerUsernameLimits": "Der Benutzername muss 3 bis 12 Zeichen lang sein und darf nur aus Buchstaben (a-z) und Zahlen (0-9) bestehen.",

View file

@ -22,7 +22,7 @@
"@onboardingSendTwonliesBody": {},
"onboardingNotProductTitle": "You are not the product!",
"@onboardingNotProductTitle": {},
"onboardingNotProductBody": "twonly is financed by a small monthly fee and not by selling your data.",
"onboardingNotProductBody": "twonly is financed by donations and an optional subscription. Your data will never be sold.",
"@onboardingNotProductBody": {},
"onboardingBuyOneGetTwoTitle": "Buy one get two",
"@onboardingBuyOneGetTwoTitle": {},

View file

@ -167,7 +167,7 @@ abstract class AppLocalizations {
/// No description provided for @onboardingNotProductBody.
///
/// In en, this message translates to:
/// **'twonly is financed by a small monthly fee and not by selling your data.'**
/// **'twonly is financed by donations and an optional subscription. Your data will never be sold.'**
String get onboardingNotProductBody;
/// No description provided for @onboardingBuyOneGetTwoTitle.

View file

@ -49,7 +49,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get onboardingNotProductBody =>
'twonly finanziert sich durch eine geringe monatliche Gebühr und nicht durch den Verkauf deiner Daten.';
'twonly wird durch Spenden und ein optionales Abonnement finanziert. Deine Daten werden niemals verkauft.';
@override
String get onboardingBuyOneGetTwoTitle => 'Kaufe eins, bekomme zwei';
@ -66,7 +66,7 @@ class AppLocalizationsDe extends AppLocalizations {
'Du kannst twonly kostenlos im Preview-Modus testen. In diesem Modus kannst du von anderen gefunden werden und Bilder oder Videos empfangen, aber du kannst selbst keine senden.';
@override
String get onboardingTryForFree => 'Kostenlos testen';
String get onboardingTryForFree => 'Jetzt registrieren';
@override
String get registerUsernameSlogan =>

View file

@ -48,7 +48,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get onboardingNotProductBody =>
'twonly is financed by a small monthly fee and not by selling your data.';
'twonly is financed by donations and an optional subscription. Your data will never be sold.';
@override
String get onboardingBuyOneGetTwoTitle => 'Buy one get two';

View file

@ -10,7 +10,8 @@ class OnboardingView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: IntroductionScreen(
body: SafeArea(
child: IntroductionScreen(
bodyPadding: const EdgeInsets.only(top: 75, left: 10, right: 10),
pages: [
PageViewModel(
@ -67,57 +68,43 @@ class OnboardingView extends StatelessWidget {
),
PageViewModel(
title: context.lang.onboardingNotProductTitle,
body: context.lang.onboardingNotProductBody,
image: Center(
child: Lottie.asset(
'assets/animations/forsale.json',
),
),
),
PageViewModel(
title: context.lang.onboardingBuyOneGetTwoTitle,
bodyWidget: Column(
children: [
Text(
context.lang.onboardingBuyOneGetTwoBody,
textAlign: TextAlign.center,
style: const TextStyle(fontSize: 18),
),
],
),
image: Center(
child: Lottie.asset(
'assets/animations/present.lottie.json',
),
),
),
PageViewModel(
title: context.lang.onboardingGetStartedTitle,
bodyWidget: Column(
children: [
Text(
context.lang.onboardingGetStartedBody,
context.lang.onboardingNotProductBody,
textAlign: TextAlign.center,
style: const TextStyle(fontSize: 18),
),
Padding(
padding: const EdgeInsets.only(left: 50, right: 50, top: 20),
padding:
const EdgeInsets.only(left: 50, right: 50, top: 20),
child: FilledButton(
onPressed: callbackOnSuccess,
child: Text(context.lang.onboardingTryForFree),
child: Text(context.lang.registerSubmitButton),
),
),
],
),
image: Center(
child: Padding(
padding: const EdgeInsets.only(top: 100),
padding: const EdgeInsets.only(top: 60),
child: Lottie.asset(
'assets/animations/rocket.json',
'assets/animations/donation.json',
),
),
),
),
// PageViewModel(
// title: context.lang.onboardingGetStartedTitle,
// image: Center(
// child: Padding(
// padding: const EdgeInsets.only(top: 100),
// child: Lottie.asset(
// 'assets/animations/rocket.json',
// ),
// ),
// ),
// ),
],
done: const Text(''),
next: Text(context.lang.next),
@ -133,6 +120,7 @@ class OnboardingView extends StatelessWidget {
RoundedRectangleBorder(borderRadius: BorderRadius.circular(25)),
),
),
),
);
}
}

View file

@ -129,6 +129,12 @@ class _CreditsViewState extends State<CreditsView> {
url:
'https://lottiefiles.com/de/free-animation/success-tick-cuwjLHAR7g',
),
const UrlListTitle(
title: 'Donation-Animation',
subtitle: 'Abdul Latif',
url:
'https://lottiefiles.com/free-animation/international-day-of-charity-NBAKAkCcBr',
),
const UrlListTitle(
title: 'Failed-Animation',
subtitle: 'Ahmed Shami أحمد شامي',