2020-11-29 22:07:46 +02:00
import ' package:flutter/material.dart ' ;
import ' package:selfprivacy/ui/components/brand_button/brand_button.dart ' ;
2020-12-08 21:26:51 +02:00
import ' package:selfprivacy/ui/components/brand_text/brand_text.dart ' ;
2020-12-30 16:13:25 +02:00
import ' package:selfprivacy/ui/pages/initializing/initializing.dart ' ;
2020-12-06 09:28:31 +02:00
import ' package:selfprivacy/utils/route_transitions/basic.dart ' ;
2020-11-29 22:07:46 +02:00
2020-12-30 16:13:25 +02:00
class OnboardingPage extends StatefulWidget {
2020-11-29 22:07:46 +02:00
const OnboardingPage ( { Key key } ) : super ( key: key ) ;
2020-12-30 16:13:25 +02:00
@ override
_OnboardingPageState createState ( ) = > _OnboardingPageState ( ) ;
}
class _OnboardingPageState extends State < OnboardingPage > {
PageController pageController = PageController ( ) ;
@ override
void initState ( ) {
super . initState ( ) ;
}
2020-11-29 22:07:46 +02:00
@ override
Widget build ( BuildContext context ) {
2020-12-06 09:28:31 +02:00
return SafeArea (
child: Scaffold (
2020-12-30 16:13:25 +02:00
body: PageView (
controller: pageController ,
children: [
_withPadding ( firstPage ( ) ) ,
_withPadding ( secondPage ( ) ) ,
] ,
) ,
) ,
) ;
}
Widget _withPadding ( Widget child ) {
return Padding (
padding: const EdgeInsets . symmetric (
horizontal: 15 ,
) ,
child: child ,
) ;
}
Widget firstPage ( ) {
return ConstrainedBox (
constraints: BoxConstraints (
maxHeight: MediaQuery . of ( context ) . size . height ,
) ,
child: Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
SizedBox ( height: 30 ) ,
BrandText . h2 (
' Цифровая независимость и приватность, доступная каждому ' ) ,
SizedBox ( height: 20 ) ,
BrandText . body2 (
' Почта и мессенджер с открытым исходным кодом на вашем личном сервере под вашим полным контролем. ' ) ,
Flexible (
child: Center (
child: Image . asset (
' assets/images/onboarding/onboarding1.png ' ,
) ,
) ,
2020-12-06 09:28:31 +02:00
) ,
2020-12-30 16:13:25 +02:00
BrandButton . rised (
onPressed: ( ) {
pageController . animateToPage (
1 ,
duration: Duration ( milliseconds: 300 ) ,
curve: Curves . easeIn ,
) ;
} ,
title: ' Далее ' ,
) ,
SizedBox ( height: 30 ) ,
] ,
) ,
) ;
}
Widget secondPage ( ) {
return ConstrainedBox (
constraints: BoxConstraints (
maxHeight: MediaQuery . of ( context ) . size . height ,
) ,
child: Column (
children: [
SizedBox ( height: 30 ) ,
BrandText . h2 ( ' Для работы понадобятся ваши аккаунты ' ) ,
SizedBox ( height: 20 ) ,
BrandText . body2 (
' Для максимальноей приватности и независимости SelfPrivacy не использует свои серверы. \n \n Если у вас нет домена, аккаунтов на Hetzner, AWS и Clouflare, мы поможем их создать и подключить. ' ) ,
SizedBox ( height: 20 ) ,
Center (
child: Image . asset (
' assets/images/onboarding/logos_line.png ' ,
) ,
) ,
Flexible (
child: Center (
child: Image . asset (
' assets/images/onboarding/onboarding2.png ' ,
2020-12-06 09:28:31 +02:00
) ,
2020-12-30 16:13:25 +02:00
) ,
2020-12-06 09:28:31 +02:00
) ,
2020-12-30 16:13:25 +02:00
BrandButton . rised (
onPressed: ( ) {
Navigator . of ( context )
. pushReplacement ( materialRoute ( InitializingPage ( ) ) ) ;
} ,
title: ' Понял ' ,
) ,
SizedBox ( height: 30 ) ,
] ,
2020-12-03 18:52:53 +02:00
) ,
) ;
}
}