123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- import 'package:flutter/cupertino.dart';
- import 'package:flutter/material.dart';
- import 'package:photos/services/user_service.dart';
- import 'package:photos/ui/common/dynamicFAB.dart';
- import 'package:step_progress_indicator/step_progress_indicator.dart';
- class OTTVerificationPage extends StatefulWidget {
- final String email;
- final bool isChangeEmail;
- final bool isCreateAccountScreen;
- OTTVerificationPage(
- this.email, {
- this.isChangeEmail = false,
- this.isCreateAccountScreen,
- Key key,
- }) : super(key: key);
- @override
- _OTTVerificationPageState createState() => _OTTVerificationPageState();
- }
- class _OTTVerificationPageState extends State<OTTVerificationPage> {
- final _verificationCodeController = TextEditingController();
- @override
- Widget build(BuildContext context) {
- final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom != 0;
- FloatingActionButtonLocation fabLocation() {
- if (isKeypadOpen) {
- return null;
- } else {
- return FloatingActionButtonLocation.centerFloat;
- }
- }
- return Scaffold(
- appBar: AppBar(
- elevation: 0,
- leading: IconButton(
- icon: Icon(Icons.arrow_back),
- color: Theme.of(context).iconTheme.color,
- onPressed: () {
- Navigator.of(context).pop();
- },
- ),
- title: widget.isCreateAccountScreen
- ? Hero(
- tag: "sign_up",
- child: Material(
- type: MaterialType.transparency,
- child: StepProgressIndicator(
- totalSteps: 4,
- currentStep: 1,
- selectedColor: Theme.of(context).buttonColor,
- roundedEdges: Radius.circular(10),
- unselectedColor: Theme.of(context).bottomAppBarColor,
- )),
- )
- : null,
- ),
- body: _getBody(),
- floatingActionButton: DynamicFAB(
- isKeypadOpen: isKeypadOpen,
- isFormValid: !(_verificationCodeController.text == null ||
- _verificationCodeController.text.isEmpty),
- buttonText: 'Verify',
- onPressedFunction: () {
- if (widget.isChangeEmail) {
- UserService.instance.changeEmail(
- context, widget.email, _verificationCodeController.text);
- } else {
- UserService.instance
- .verifyEmail(context, _verificationCodeController.text);
- }
- },
- ),
- floatingActionButtonLocation: fabLocation(),
- );
- }
- Widget _getBody() {
- //return SingleChildScrollView(
- //child:
- return ListView(
- children: [
- Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Padding(
- padding: const EdgeInsets.fromLTRB(20, 30, 20, 15),
- child: Text('Verify email',
- style: Theme.of(context).textTheme.headline4),
- ),
- // Text(
- // "We've sent a mail to " + widget.email,
- // style: TextStyle(
- // color: Theme.of(context).buttonColor,
- // fontSize: 18,
- // ),
- // ),
- Padding(
- padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
- child: Row(
- children: [
- Expanded(
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Padding(
- padding: const EdgeInsets.fromLTRB(0, 0, 0, 5),
- child: RichText(
- text: TextSpan(
- style: Theme.of(context)
- .textTheme
- .subtitle1
- .copyWith(fontSize: 12),
- children: [
- TextSpan(text: "We've sent a mail to "),
- TextSpan(
- text: widget.email,
- style: TextStyle(
- color: Theme.of(context).buttonColor))
- ],
- ),
- ),
- ),
- Text(
- 'Please check your inbox (and spam) to complete verification',
- style: Theme.of(context)
- .textTheme
- .subtitle1
- .copyWith(fontSize: 12),
- ),
- ],
- ),
- ),
- SizedBox(
- width: MediaQuery.of(context).size.width * 0.3,
- height: 1,
- )
- ],
- ),
- ),
- // Padding(
- // padding: const EdgeInsets.all(32),
- // child: Text(
- // "please check your inbox (and spam) to complete verification.",
- // textAlign: TextAlign.center,
- // style: TextStyle(fontSize: 12),
- // ),
- // ),
- Padding(
- padding: const EdgeInsets.fromLTRB(20, 10, 20, 15),
- child: TextFormField(
- style: Theme.of(context).textTheme.subtitle1,
- decoration: InputDecoration(
- filled: true,
- hintText: 'tap to enter code',
- contentPadding: EdgeInsets.all(15),
- border: UnderlineInputBorder(
- borderSide: BorderSide.none,
- borderRadius: BorderRadius.circular(6)),
- ),
- controller: _verificationCodeController,
- autofocus: false,
- autocorrect: false,
- keyboardType: TextInputType.visiblePassword,
- onChanged: (_) {
- setState(() {});
- },
- ),
- ),
- Divider(
- thickness: 1.5,
- ),
- Padding(
- padding: const EdgeInsets.all(20),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.end,
- children: [
- TextButton(
- onPressed: () {
- //Navigator.of(context).pop();
- UserService.instance.getOtt(context, widget.email,
- isCreateAccountScreen: widget.isCreateAccountScreen);
- },
- child: Text("Resend email",
- style: Theme.of(context).textTheme.subtitle1.copyWith(
- fontSize: 14,
- decoration: TextDecoration
- .underline) //hardcoded //is this okay? //functionality not added
- ),
- )
- ],
- ),
- ),
- ],
- ),
- ],
- );
- // );
- }
- }
|