mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-01-15 16:28:40 +00:00
fix #216
This commit is contained in:
parent
14811dea22
commit
1a1b02b92b
7 changed files with 120 additions and 2 deletions
|
|
@ -295,5 +295,8 @@
|
||||||
"backupOwnServerDesc": "Speichere dein twonly Safe-Backups auf einem Server deiner Wahl.",
|
"backupOwnServerDesc": "Speichere dein twonly Safe-Backups auf einem Server deiner Wahl.",
|
||||||
"backupUseOwnServer": "Server verwenden",
|
"backupUseOwnServer": "Server verwenden",
|
||||||
"backupResetServer": "Standardserver verwenden",
|
"backupResetServer": "Standardserver verwenden",
|
||||||
"backupTwonlySaveNow": "Jetzt speichern"
|
"backupTwonlySaveNow": "Jetzt speichern",
|
||||||
|
"inviteFriends": "Freunde einladen",
|
||||||
|
"inviteFriendsShareBtn": "Teilen",
|
||||||
|
"inviteFriendsShareText": "Wechseln wir zu twonly: {url}"
|
||||||
}
|
}
|
||||||
|
|
@ -452,5 +452,8 @@
|
||||||
"backupTwonlySaveNow": "Save now",
|
"backupTwonlySaveNow": "Save now",
|
||||||
"twonlySafeRecoverTitle": "Recovery",
|
"twonlySafeRecoverTitle": "Recovery",
|
||||||
"twonlySafeRecoverDesc": "If you have created a backup with twonly Safe, you can restore it here.",
|
"twonlySafeRecoverDesc": "If you have created a backup with twonly Safe, you can restore it here.",
|
||||||
"twonlySafeRecoverBtn": "Restore backup"
|
"twonlySafeRecoverBtn": "Restore backup",
|
||||||
|
"inviteFriends": "Invite your friends",
|
||||||
|
"inviteFriendsShareBtn": "Share",
|
||||||
|
"inviteFriendsShareText": "Let's switch to twonly: {url}"
|
||||||
}
|
}
|
||||||
|
|
@ -1813,6 +1813,24 @@ abstract class AppLocalizations {
|
||||||
/// In en, this message translates to:
|
/// In en, this message translates to:
|
||||||
/// **'Restore backup'**
|
/// **'Restore backup'**
|
||||||
String get twonlySafeRecoverBtn;
|
String get twonlySafeRecoverBtn;
|
||||||
|
|
||||||
|
/// No description provided for @inviteFriends.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Invite your friends'**
|
||||||
|
String get inviteFriends;
|
||||||
|
|
||||||
|
/// No description provided for @inviteFriendsShareBtn.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Share'**
|
||||||
|
String get inviteFriendsShareBtn;
|
||||||
|
|
||||||
|
/// No description provided for @inviteFriendsShareText.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Let\'s switch to twonly: {url}'**
|
||||||
|
String inviteFriendsShareText(Object url);
|
||||||
}
|
}
|
||||||
|
|
||||||
class _AppLocalizationsDelegate
|
class _AppLocalizationsDelegate
|
||||||
|
|
|
||||||
|
|
@ -963,4 +963,15 @@ class AppLocalizationsDe extends AppLocalizations {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get twonlySafeRecoverBtn => 'Restore backup';
|
String get twonlySafeRecoverBtn => 'Restore backup';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get inviteFriends => 'Freunde einladen';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get inviteFriendsShareBtn => 'Teilen';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String inviteFriendsShareText(Object url) {
|
||||||
|
return 'Wechseln wir zu twonly: $url';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -957,4 +957,15 @@ class AppLocalizationsEn extends AppLocalizations {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get twonlySafeRecoverBtn => 'Restore backup';
|
String get twonlySafeRecoverBtn => 'Restore backup';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get inviteFriends => 'Invite your friends';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get inviteFriendsShareBtn => 'Share';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String inviteFriendsShareText(Object url) {
|
||||||
|
return 'Let\'s switch to twonly: $url';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ import 'package:twonly/src/views/settings/notification.view.dart';
|
||||||
import 'package:twonly/src/views/settings/profile/profile.view.dart';
|
import 'package:twonly/src/views/settings/profile/profile.view.dart';
|
||||||
import 'package:twonly/src/views/settings/help/help.view.dart';
|
import 'package:twonly/src/views/settings/help/help.view.dart';
|
||||||
import 'package:twonly/src/views/settings/privacy.view.dart';
|
import 'package:twonly/src/views/settings/privacy.view.dart';
|
||||||
|
import 'package:twonly/src/views/settings/share_with_friends.view.dart';
|
||||||
import 'package:twonly/src/views/settings/subscription/subscription.view.dart';
|
import 'package:twonly/src/views/settings/subscription/subscription.view.dart';
|
||||||
|
|
||||||
class SettingsMainView extends StatefulWidget {
|
class SettingsMainView extends StatefulWidget {
|
||||||
|
|
@ -195,6 +196,17 @@ class _SettingsMainViewState extends State<SettingsMainView> {
|
||||||
));
|
));
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
BetterListTile(
|
||||||
|
icon: FontAwesomeIcons.shareFromSquare,
|
||||||
|
text: context.lang.inviteFriends,
|
||||||
|
onTap: () {
|
||||||
|
Navigator.push(context, MaterialPageRoute(
|
||||||
|
builder: (context) {
|
||||||
|
return ShareWithFriendsView();
|
||||||
|
},
|
||||||
|
));
|
||||||
|
},
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
60
lib/src/views/settings/share_with_friends.view.dart
Normal file
60
lib/src/views/settings/share_with_friends.view.dart
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
|
import 'package:share_plus/share_plus.dart';
|
||||||
|
import 'package:twonly/src/utils/misc.dart';
|
||||||
|
|
||||||
|
class ShareWithFriendsView extends StatefulWidget {
|
||||||
|
const ShareWithFriendsView({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<ShareWithFriendsView> createState() => _ShareWithFriendsView();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _ShareWithFriendsView extends State<ShareWithFriendsView> {
|
||||||
|
final TextEditingController _controller = TextEditingController();
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
|
_controller.text =
|
||||||
|
context.lang.inviteFriendsShareText("https://twonly.eu/install");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void _shareText() async {
|
||||||
|
final textToShare = _controller.text;
|
||||||
|
final params = ShareParams(
|
||||||
|
text: textToShare,
|
||||||
|
);
|
||||||
|
await SharePlus.instance.share(params);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Scaffold(
|
||||||
|
appBar: AppBar(
|
||||||
|
title: Text(context.lang.inviteFriends),
|
||||||
|
),
|
||||||
|
body: Padding(
|
||||||
|
padding: const EdgeInsets.all(16.0),
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
TextField(
|
||||||
|
controller: _controller,
|
||||||
|
style: TextStyle(fontSize: 14.0),
|
||||||
|
decoration: InputDecoration(),
|
||||||
|
),
|
||||||
|
SizedBox(height: 16.0),
|
||||||
|
FilledButton.icon(
|
||||||
|
onPressed: _shareText,
|
||||||
|
icon: FaIcon(FontAwesomeIcons.shareFromSquare),
|
||||||
|
label: Text(context.lang.inviteFriendsShareBtn),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue