From: Aaron Lauterer <a.lauterer@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH pve_flutter_frontend 3/3] Add first welcome screen
Date: Mon, 28 Sep 2020 15:41:25 +0200 [thread overview]
Message-ID: <20200928134125.7266-1-a.lauterer@proxmox.com> (raw)
In-Reply-To: <20200928122825.21547-4-a.lauterer@proxmox.com>
Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
---
Same patch without temp png files.
Thanks @Dominik for noticing
.../ssl_validate/login_manager_screen.png | Bin 0 -> 20389 bytes
.../login_manager_screen_settings.png | Bin 0 -> 37362 bytes
lib/main.dart | 14 +-
lib/utils/dot_indicators.dart | 67 ++++++
.../pve_welcome_common.dart | 48 +++++
.../firstWelcomeScreen/pve_welcome_faq.dart | 56 +++++
.../firstWelcomeScreen/pve_welcome_last.dart | 66 ++++++
.../firstWelcomeScreen/pve_welcome_logo.dart | 33 +++
.../pve_welcome_ssl_hint.dart | 51 +++++
lib/widgets/pve_first_welcome_screen.dart | 193 ++++++++++++++++++
pubspec.yaml | 1 +
11 files changed, 528 insertions(+), 1 deletion(-)
create mode 100644 assets/images/ssl_validate/login_manager_screen.png
create mode 100644 assets/images/ssl_validate/login_manager_screen_settings.png
create mode 100644 lib/utils/dot_indicators.dart
create mode 100644 lib/widgets/firstWelcomeScreen/pve_welcome_common.dart
create mode 100644 lib/widgets/firstWelcomeScreen/pve_welcome_faq.dart
create mode 100644 lib/widgets/firstWelcomeScreen/pve_welcome_last.dart
create mode 100644 lib/widgets/firstWelcomeScreen/pve_welcome_logo.dart
create mode 100644 lib/widgets/firstWelcomeScreen/pve_welcome_ssl_hint.dart
create mode 100644 lib/widgets/pve_first_welcome_screen.dart
diff --git a/assets/images/ssl_validate/login_manager_screen.png b/assets/images/ssl_validate/login_manager_screen.png
new file mode 100644
index 0000000000000000000000000000000000000000..b6668cc8f5b3fcc742ee2a6ce019ea4318fda92a
GIT binary patch
literal 20389
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
literal 0
HcmV?d00001
diff --git a/assets/images/ssl_validate/login_manager_screen_settings.png b/assets/images/ssl_validate/login_manager_screen_settings.png
new file mode 100644
index 0000000000000000000000000000000000000000..8858724a41bc452bb9d338242df0da8e5b61079e
GIT binary patch
literal 37362
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
Wyv;~hkMo}ZKjI=X!X<*AzWyH_xa}4I
literal 0
HcmV?d00001
diff --git a/lib/main.dart b/lib/main.dart
index 8cd6c36..57ad39c 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -1,6 +1,8 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
+import 'package:pve_flutter_frontend/widgets/pve_first_welcome_screen.dart';
+import 'package:shared_preferences/shared_preferences.dart';
import 'package:proxmox_login_manager/proxmox_login_manager.dart';
import 'package:pve_flutter_frontend/bloc/pve_authentication_bloc.dart';
import 'package:pve_flutter_frontend/bloc/pve_cluster_status_bloc.dart';
@@ -47,6 +49,7 @@ void main() async {
FlutterError.dumpErrorToConsole(details);
if (kReleaseMode) ProxmoxGlobalErrorBloc().addError(details.exception);
};
+ SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
Provider.debugCheckInvalidValueType = null;
runApp(
@@ -60,6 +63,7 @@ void main() async {
],
child: MyApp(
authbloc: authBloc,
+ sharedPreferences: sharedPreferences,
),
),
);
@@ -67,9 +71,12 @@ void main() async {
class MyApp extends StatelessWidget {
final PveAuthenticationBloc authbloc;
+ final SharedPreferences sharedPreferences;
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
- MyApp({Key key, this.authbloc}) : super(key: key);
+ MyApp({Key key, this.authbloc, this.sharedPreferences})
+ : assert(sharedPreferences != null),
+ super(key: key);
@override
Widget build(BuildContext context) {
@@ -142,6 +149,11 @@ class MyApp extends StatelessWidget {
builder: (context) => PveSplashScreen(),
);
}
+ if (sharedPreferences.getBool('showWelcomeScreen') ?? true) {
+ return MaterialPageRoute(
+ builder: (context) => PveWelcome(),
+ );
+ }
if (authbloc.state.value is Unauthenticated ||
context.name == '/login') {
diff --git a/lib/utils/dot_indicators.dart b/lib/utils/dot_indicators.dart
new file mode 100644
index 0000000..7b5034f
--- /dev/null
+++ b/lib/utils/dot_indicators.dart
@@ -0,0 +1,67 @@
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+import 'dart:math';
+
+class DotIndicator extends AnimatedWidget {
+ DotIndicator({
+ this.controller,
+ this.itemCount,
+ this.onPageSelected,
+ this.color: Colors.white,
+ }) : super(listenable: controller);
+
+ final PageController controller;
+
+ final int itemCount;
+
+ final ValueChanged<int> onPageSelected;
+ final Color color;
+
+ static const double _dotSize = 8.0;
+ static const double _maxZoom = 1.2;
+ static const double _dotSpacing = 25.0;
+
+ Widget _buildDot(int index) {
+ double selectedness = Curves.easeOut.transform(
+ max(
+ 0.0,
+ 1.0 - ((controller.page ?? controller.initialPage) - index).abs(),
+ ),
+ );
+ double zoom = 1.0 + (_maxZoom - 1.0) * selectedness;
+ double shadowBlurRadius = 4.0 * selectedness;
+ double shadowSpreadRadius = 1.0 * selectedness;
+ return new Container(
+ width: _dotSpacing,
+ child: Center(
+ child: Container(
+ width: _dotSize * zoom,
+ height: _dotSize * zoom,
+ child: InkWell(
+ onTap: () => onPageSelected(index),
+ ),
+ decoration: BoxDecoration(
+ color: color,
+ shape: BoxShape.circle,
+ boxShadow: [
+ BoxShadow(
+ color: Colors.white.withOpacity(0.72),
+ blurRadius: shadowBlurRadius,
+ spreadRadius: shadowSpreadRadius,
+ offset: Offset(0.0, 0.0))
+ ],
+ ),
+ ),
+ ),
+ );
+ }
+
+ Widget build(BuildContext contect) {
+ return Row(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: List<Widget>.generate(
+ itemCount,
+ _buildDot,
+ ));
+ }
+}
diff --git a/lib/widgets/firstWelcomeScreen/pve_welcome_common.dart b/lib/widgets/firstWelcomeScreen/pve_welcome_common.dart
new file mode 100644
index 0000000..52055f9
--- /dev/null
+++ b/lib/widgets/firstWelcomeScreen/pve_welcome_common.dart
@@ -0,0 +1,48 @@
+import 'package:flutter/material.dart';
+
+class PveQuestion extends StatelessWidget {
+ const PveQuestion({
+ Key key,
+ this.text,
+ }) : super(key: key);
+
+ final String text;
+
+ @override
+ Widget build(BuildContext context) {
+ return Padding(
+ padding: EdgeInsets.fromLTRB(10.0, 10.0, 5.0, 0.0),
+ child: Text(
+ text,
+ style: TextStyle(
+ fontWeight: FontWeight.bold,
+ ),
+ ),
+ );
+ }
+}
+
+class PveAnswer extends StatelessWidget {
+ const PveAnswer({
+ Key key,
+ this.text,
+ this.spans,
+ }) : super(key: key);
+
+ final String text;
+ final List<TextSpan> spans;
+
+ @override
+ Widget build(BuildContext context) {
+ return Padding(
+ padding: EdgeInsets.fromLTRB(20.0, 5.0, 5.0, 5.0),
+ child: RichText(
+ text: TextSpan(
+ text: text,
+ style: DefaultTextStyle.of(context).style,
+ children: spans,
+ ),
+ ),
+ );
+ }
+}
diff --git a/lib/widgets/firstWelcomeScreen/pve_welcome_faq.dart b/lib/widgets/firstWelcomeScreen/pve_welcome_faq.dart
new file mode 100644
index 0000000..65f931c
--- /dev/null
+++ b/lib/widgets/firstWelcomeScreen/pve_welcome_faq.dart
@@ -0,0 +1,56 @@
+import 'package:flutter/material.dart';
+import 'package:url_launcher/url_launcher.dart';
+import 'package:flutter/gestures.dart';
+import 'pve_welcome_common.dart';
+
+// FAQ
+class PveWelcomePageFAQ extends StatelessWidget {
+ const PveWelcomePageFAQ({
+ Key key,
+ }) : super(key: key);
+
+ @override
+ Widget build(BuildContext context) {
+ return Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ PveQuestion(
+ text: "How do I connect if I am not using the default port 8006?"),
+ PveAnswer(
+ text:
+ "Add the port at the end, separated by a colon. For the default https port add 443."),
+ PveAnswer(
+ text: "For example: 192.168.1.10",
+ spans: [
+ TextSpan(
+ text: ":443",
+ style: TextStyle(
+ fontWeight: FontWeight.bold, fontStyle: FontStyle.italic))
+ ],
+ ),
+ PveQuestion(
+ text: "What about remote consoles?",
+ ),
+ PveAnswer(
+ text:
+ "Spice is currently supported. We plan to integrate VNC in the future."),
+ PveQuestion(text: "Which Spice client works?"),
+ PveAnswer(
+ text: "The ",
+ spans: [
+ TextSpan(
+ text: "Opague Spice client",
+ style: TextStyle(decoration: TextDecoration.underline),
+ recognizer: TapGestureRecognizer()
+ ..onTap = () => {
+ launch(
+ 'https://play.google.com/store/apps/details?id=com.undatech.opaque')
+ }),
+ TextSpan(text: " works. We will support more in the future.")
+ ],
+ )
+ ],
+ );
+ }
+}
diff --git a/lib/widgets/firstWelcomeScreen/pve_welcome_last.dart b/lib/widgets/firstWelcomeScreen/pve_welcome_last.dart
new file mode 100644
index 0000000..cf34224
--- /dev/null
+++ b/lib/widgets/firstWelcomeScreen/pve_welcome_last.dart
@@ -0,0 +1,66 @@
+import 'package:flutter/material.dart';
+import 'package:url_launcher/url_launcher.dart';
+import 'package:flutter/gestures.dart';
+import '../../utils/promox_colors.dart';
+
+// goodbye
+class PveWelcomePageLast extends StatelessWidget {
+ const PveWelcomePageLast({Key key, this.onDone}) : super(key: key);
+
+ final VoidCallback onDone;
+
+ @override
+ Widget build(BuildContext context) {
+ return Padding(
+ padding: EdgeInsets.all(15.0),
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Text("Enjoy the app"),
+ Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Icon(
+ Icons.emoji_people_rounded,
+ color: Colors.white,
+ size: 70,
+ ),
+ ),
+ Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: RaisedButton(
+ onPressed: () => {onDone()},
+ color: ProxmoxColors.orange,
+ textColor: Colors.white,
+ child: Text("Start"),
+ ),
+ ),
+ RichText(
+ textAlign: TextAlign.center,
+ text: TextSpan(
+ text: "Please use our ",
+ style: DefaultTextStyle.of(context).style,
+ children: <TextSpan>[
+ TextSpan(
+ text: 'community forum',
+ style: TextStyle(decoration: TextDecoration.underline),
+ recognizer: TapGestureRecognizer()
+ ..onTap = () => {launch('https://forum.proxmox.com')}),
+ TextSpan(text: ' or the '),
+ TextSpan(
+ text: 'user mailing list',
+ style: TextStyle(decoration: TextDecoration.underline),
+ recognizer: TapGestureRecognizer()
+ ..onTap = () => {
+ launch(
+ 'https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-user')
+ }),
+ TextSpan(
+ text:
+ ' if you have suggestions or experience any problems.'),
+ ],
+ ),
+ ),
+ ],
+ ));
+ }
+}
diff --git a/lib/widgets/firstWelcomeScreen/pve_welcome_logo.dart b/lib/widgets/firstWelcomeScreen/pve_welcome_logo.dart
new file mode 100644
index 0000000..3aee19a
--- /dev/null
+++ b/lib/widgets/firstWelcomeScreen/pve_welcome_logo.dart
@@ -0,0 +1,33 @@
+import 'package:flutter/material.dart';
+
+// Big Logo
+class PveWelcomePageLogo extends StatelessWidget {
+ const PveWelcomePageLogo({
+ Key key,
+ }) : super(key: key);
+
+ @override
+ Widget build(BuildContext context) {
+ return Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ Padding(
+ padding: const EdgeInsets.fromLTRB(120.0, 0.0, 120.0, 30.0),
+ child: Image.asset(
+ 'assets/images/Proxmox-logo-symbol-white-orange.png',
+ alignment: Alignment.center,
+ ),
+ ),
+ FittedBox(
+ child: Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Text(
+ 'Proxmox Virtual Environment',
+ style: TextStyle(fontSize: 26),
+ ),
+ ),
+ ),
+ ]);
+ }
+}
diff --git a/lib/widgets/firstWelcomeScreen/pve_welcome_ssl_hint.dart b/lib/widgets/firstWelcomeScreen/pve_welcome_ssl_hint.dart
new file mode 100644
index 0000000..61d02f4
--- /dev/null
+++ b/lib/widgets/firstWelcomeScreen/pve_welcome_ssl_hint.dart
@@ -0,0 +1,51 @@
+import 'package:flutter/material.dart';
+import 'pve_welcome_common.dart';
+
+// disable ssl validation hint
+class PveWelcomePageSSLValidation extends StatelessWidget {
+ const PveWelcomePageSSLValidation({
+ Key key,
+ }) : super(key: key);
+
+ @override
+ Widget build(BuildContext context) {
+ return Padding(
+ padding: EdgeInsets.all(15.0),
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ PveQuestion(
+ text: "Are you using a self signed certificate?",
+ ),
+ PveAnswer(
+ text: "Disable SSL Validation in the Login Manager settings."),
+ Column(
+ children: [
+ Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Container(
+ decoration: BoxDecoration(
+ border: Border.all(color: Colors.white, width: 0.5)),
+ child: Image.asset(
+ 'assets/images/ssl_validate/login_manager_screen.png',
+ ),
+ ),
+ ),
+ Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Container(
+ decoration: BoxDecoration(
+ border: Border.all(color: Colors.white, width: 0.5)),
+ child: Image.asset(
+ 'assets/images/ssl_validate/login_manager_screen_settings.png',
+ ),
+ ),
+ ),
+ ],
+ )
+ ],
+ ),
+ );
+ }
+}
diff --git a/lib/widgets/pve_first_welcome_screen.dart b/lib/widgets/pve_first_welcome_screen.dart
new file mode 100644
index 0000000..83fe399
--- /dev/null
+++ b/lib/widgets/pve_first_welcome_screen.dart
@@ -0,0 +1,193 @@
+import 'dart:ui';
+
+import 'package:flutter/material.dart';
+import 'package:flutter/rendering.dart';
+import 'package:shared_preferences/shared_preferences.dart';
+import '../utils/dot_indicators.dart';
+import '../utils/promox_colors.dart';
+import 'firstWelcomeScreen/pve_welcome_logo.dart';
+import 'firstWelcomeScreen/pve_welcome_faq.dart';
+import 'firstWelcomeScreen/pve_welcome_ssl_hint.dart';
+import 'firstWelcomeScreen/pve_welcome_last.dart';
+
+class PveWelcome extends StatefulWidget {
+ @override
+ _PveWelcomeState createState() => _PveWelcomeState();
+}
+
+class _PveWelcomeState extends State<PveWelcome> with TickerProviderStateMixin {
+ PageController _controller;
+ SharedPreferences _sharedPreferences;
+
+ final List<Widget> _pages = [
+ PveWelcomePageLogo(),
+ PveWelcomePageSSLValidation(),
+ PveWelcomePageFAQ(),
+ ];
+
+ // Duration for page change
+ static const Duration _pageChangeDuration = Duration(milliseconds: 150);
+ static const Curve _pageChangeCurve = Curves.easeInOut;
+
+ AnimationController _animController;
+ Animation<Color> _animation;
+
+ final colors = <TweenSequenceItem<Color>>[
+ TweenSequenceItem(
+ weight: 1.0,
+ tween: ColorTween(
+ begin: ProxmoxColors.supportBlue, end: ProxmoxColors.supportDarkGrey),
+ ),
+ TweenSequenceItem(
+ weight: 1.0,
+ tween: ColorTween(
+ begin: ProxmoxColors.supportDarkGrey, end: ProxmoxColors.orange),
+ ),
+ TweenSequenceItem(
+ weight: 1.0,
+ tween: ColorTween(
+ begin: ProxmoxColors.orange, end: ProxmoxColors.supportBlue),
+ ),
+ ];
+
+ bool _isLast = false;
+ bool _isFirst = true;
+
+ final _buttonTextColor = Colors.white;
+ final _buttonDisabledTextColor = Colors.white30;
+
+ void _getPrefs() async {
+ _sharedPreferences = await SharedPreferences.getInstance();
+ }
+
+ void _setWelcomeSeen() async {
+ _sharedPreferences.setBool('showWelcomeScreen', false);
+ }
+
+ @override
+ void initState() {
+ super.initState();
+
+ _getPrefs();
+ _controller = PageController();
+
+ // add last page here so we can define the callback for the start button
+ _pages.add(PveWelcomePageLast(onDone: () {
+ skipDone();
+ }));
+
+ _animController = AnimationController(
+ duration: _pageChangeDuration,
+ vsync: this,
+ );
+ _animation = TweenSequence<Color>(colors).animate(_animController)
+ ..addListener(() {
+ setState(() {});
+ });
+
+ _controller.addListener(() {
+ setState(() {
+ _isLast = _controller.page.floor() == _pages.length - 1;
+ _isFirst = _controller.page.floor() == 0;
+ });
+ });
+ }
+
+ void skipDone() {
+ _setWelcomeSeen();
+ Navigator.pushReplacementNamed(context, '/');
+ }
+
+ Widget nextDoneButton() {
+ if (_isLast) {
+ return FlatButton(
+ textColor: _buttonTextColor,
+ disabledTextColor: _buttonDisabledTextColor,
+ child: Text(
+ "Done",
+ ),
+ onPressed: () {
+ skipDone();
+ },
+ );
+ } else {
+ return FlatButton(
+ child: Text("Next"),
+ textColor: _buttonTextColor,
+ disabledTextColor: _buttonDisabledTextColor,
+ onPressed: () {
+ _controller.nextPage(
+ duration: _pageChangeDuration, curve: _pageChangeCurve);
+ },
+ );
+ }
+ }
+
+ Widget skipPrevButton() {
+ if (_isFirst) {
+ return FlatButton(
+ textColor: _buttonTextColor,
+ disabledTextColor: _buttonDisabledTextColor,
+ onPressed: () {
+ skipDone();
+ },
+ child: Text(
+ 'Skip',
+ ),
+ );
+ } else {
+ return FlatButton(
+ textColor: _buttonTextColor,
+ disabledTextColor: _buttonDisabledTextColor,
+ child: Text(
+ "Prev",
+ ),
+ onPressed: () {
+ _controller.previousPage(
+ duration: _pageChangeDuration, curve: _pageChangeCurve);
+ },
+ );
+ }
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ backgroundColor: _animation.value,
+ body: DefaultTextStyle(
+ style: TextStyle(color: Colors.white, fontSize: 18),
+ child: Column(
+ children: [
+ Expanded(
+ child: PageView.builder(
+ controller: _controller,
+ itemCount: _pages.length,
+ onPageChanged: ((int index) {
+ _animController.animateTo(index / colors.length);
+ }),
+ itemBuilder: (context, index) {
+ return _pages[index];
+ },
+ ),
+ ),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ skipPrevButton(),
+ DotIndicator(
+ controller: _controller,
+ itemCount: _pages.length,
+ onPageSelected: (int page) {
+ _controller.animateToPage(page,
+ duration: _pageChangeDuration, curve: _pageChangeCurve);
+ },
+ ),
+ nextDoneButton(),
+ ],
+ ),
+ ],
+ ),
+ ),
+ );
+ }
+}
diff --git a/pubspec.yaml b/pubspec.yaml
index d31eb74..09fa250 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -61,6 +61,7 @@ flutter:
- assets/images/Proxmox_logo_white_orange_800.png
- assets/images/Proxmox-logo-symbol-white-orange.png
- assets/images/proxmox_logo_icon_white.png
+ - assets/images/ssl_validate/
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware.
--
2.20.1
next prev parent reply other threads:[~2020-09-28 13:41 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-28 12:28 [pve-devel] [PATCH pve_flutter_frontend 0/3] " Aaron Lauterer
2020-09-28 12:28 ` [pve-devel] [PATCH pve_flutter_frontend 1/3] add class for Proxmox corporate identity colors Aaron Lauterer
2020-09-30 10:54 ` Tim Marx
2020-09-30 11:13 ` Aaron Lauterer
2020-09-28 12:28 ` [pve-devel] [PATCH pve_flutter_frontend 2/3] add Proxmox symbol logo white orange Aaron Lauterer
2020-09-30 11:08 ` Tim Marx
2020-09-30 11:22 ` Aaron Lauterer
2020-09-28 12:28 ` [pve-devel] [PATCH pve_flutter_frontend 3/3] Add first welcome screen Aaron Lauterer
2020-09-28 13:41 ` Aaron Lauterer [this message]
2020-09-30 12:04 ` Tim Marx
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200928134125.7266-1-a.lauterer@proxmox.com \
--to=a.lauterer@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal