1665916430
Twilio_Phone_Verify
A Package that helps in verifying phone numbers and email addresses using Twilio.
To use this package :
dependencies:
flutter:
sdk: flutter
twilio_phone_verify:
TwilioPhoneVerify _twilioPhoneVerify;
_twilioPhoneVerify = new TwilioPhoneVerify(
accountSid: '*************************', // replace with Account SID
authToken: 'xxxxxxxxxxxxxxxxxx', // replace with Auth Token
serviceSid: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' // replace with Service SID
);
Send Code to Phone
var twilioResponse =
await _twilioPhoneVerify.sendSmsCode('phone');
if (twilioResponse.successful) {
//code sent
} else {
//print(twilioResponse.errorMessage);
}
Verify Code
var twilioResponse = await _twilioPhoneVerify.verifySmsCode(
phone: 'phone', code: 'code');
if (twilioResponse.successful) {
if (twilioResponse.verification.status == VerificationStatus.approved) {
//print('Phone number is approved');
} else {
//print('Invalid code');
}
} else {
//print(twilioResponse.errorMessage);
}
Twilio Verify email channel requires additional Service configuration. Please refer to the email channel setup documentation for detailed instructions.
Send Code to Email
var twilioResponse =
await _twilioPhoneVerify.sendEmailCode('email');
if (twilioResponse.successful) {
//code sent
} else {
//print(twilioResponse.errorMessage);
}
Verify Email Code
var twilioResponse = await _twilioPhoneVerify.verifyEmailCode(
email: 'email', code: 'code');
if (twilioResponse.successful) {
if (twilioResponse.verification.status == VerificationStatus.approved) {
//print('Email is approved');
} else {
//print('Invalid code');
}
} else {
//print(twilioResponse.errorMessage);
}
Override Email configurations
var twilioResponse =
await _twilioPhoneVerify.sendEmailCode('email',channelConfiguration:
EmailChannelConfiguration(
from: "override@example.com",
from_name: "Override Name",
template_id: "d-4f7abxxxxxxxxxxxx",
usernameSubstitution: "Foo Bar"
));
if (twilioResponse.successful) {
//code sent
} else {
//print(twilioResponse.errorMessage);
}
Features
For help getting started with Flutter, view our online documentation.
For help on editing package code, view the documentation.
Run this command:
With Flutter:
$ flutter pub add twilio_phone_verify
This will add a line like this to your package's pubspec.yaml (and run an implicit flutter pub get
):
dependencies:
twilio_phone_verify: ^2.0.0
Alternatively, your editor might support flutter pub get
. Check the docs for your editor to learn more.
Now in your Dart code, you can use:
import 'package:twilio_phone_verify/twilio_phone_verify.dart';
import 'package:flutter/material.dart';
import 'package:twilio_phone_verify/twilio_phone_verify.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Twilio Phone Verify',
theme: ThemeData(
primaryColor: Color(0xFF233659),
),
home: PhoneVerification(),
);
}
}
enum VerificationState { enterPhone, enterSmsCode }
class PhoneVerification extends StatefulWidget {
@override
_PhoneVerificationState createState() => _PhoneVerificationState();
}
class _PhoneVerificationState extends State<PhoneVerification> {
TwilioPhoneVerify _twilioPhoneVerify;
var verificationState = VerificationState.enterPhone;
var phoneNumberController = TextEditingController();
var smsCodeController = TextEditingController();
bool loading = false;
String errorMessage;
String successMessage;
@override
void initState() {
// TODO: implement initState
super.initState();
_twilioPhoneVerify = TwilioPhoneVerify(
accountSid: '',
serviceSid: '',
authToken: '');
}
@override
Widget build(BuildContext context) {
return verificationState == VerificationState.enterPhone
? _buildEnterPhoneNumber()
: _buildEnterSmsCode();
}
void changeErrorMessage(var message) =>
setState(() => errorMessage = message);
void changeSuccessMessage(var message) =>
setState(() => successMessage = message);
void changeLoading(bool status) => setState(() => loading = status);
void switchToSmsCode() async {
changeSuccessMessage(null);
changeErrorMessage(null);
changeLoading(false);
setState(() {
verificationState = VerificationState.enterSmsCode;
});
}
void switchToPhoneNumber() {
if (loading) return;
changeSuccessMessage(null);
changeErrorMessage(null);
setState(() {
verificationState = VerificationState.enterPhone;
});
}
void sendCode() async {
if (phoneNumberController.text.isEmpty || loading) return;
changeLoading(true);
TwilioResponse twilioResponse =
await _twilioPhoneVerify.sendSmsCode(phoneNumberController.text);
if (twilioResponse.successful) {
changeSuccessMessage('Code sent to ${phoneNumberController.text}');
await Future.delayed(Duration(seconds: 1));
switchToSmsCode();
} else {
changeErrorMessage(twilioResponse.errorMessage);
}
changeLoading(false);
}
void verifyCode() async {
if (phoneNumberController.text.isEmpty ||
smsCodeController.text.isEmpty ||
loading) return;
changeLoading(true);
TwilioResponse twilioResponse = await _twilioPhoneVerify.verifySmsCode(
phone: phoneNumberController.text, code: smsCodeController.text);
if (twilioResponse.successful) {
if (twilioResponse.verification.status == VerificationStatus.approved) {
changeSuccessMessage('Phone number is approved');
} else {
changeSuccessMessage('Invalid code');
}
} else {
changeErrorMessage(twilioResponse.errorMessage);
}
changeLoading(false);
}
_buildEnterPhoneNumber() {
return Scaffold(
body: Padding(
padding: const EdgeInsets.all(40.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextField(
controller: phoneNumberController,
keyboardType: TextInputType.phone,
decoration: InputDecoration(labelText: 'Enter Phone Number'),
),
SizedBox(
height: 20,
),
Container(
width: double.infinity,
height: 40,
child: TextButton(
onPressed: sendCode,
style: TextButton.styleFrom(
backgroundColor: Theme.of(context).primaryColor),
child: loading
? _loader()
: Text(
'Send code',
style: TextStyle(color: Colors.white),
)),
),
if (errorMessage != null) ...[
SizedBox(
height: 30,
),
_errorWidget()
],
if (successMessage != null) ...[
SizedBox(
height: 30,
),
_successWidget()
]
],
),
),
);
}
_buildEnterSmsCode() {
return Scaffold(
appBar: AppBar(
elevation: 0,
backgroundColor: Colors.transparent,
leading: IconButton(
icon: Icon(
Icons.arrow_back_ios,
size: 18,
color: Theme.of(context).primaryColor,
),
onPressed: switchToPhoneNumber,
),
),
body: Padding(
padding: const EdgeInsets.all(40.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextField(
controller: smsCodeController,
keyboardType: TextInputType.number,
decoration: InputDecoration(labelText: 'Enter Sms Code'),
),
SizedBox(
height: 20,
),
Container(
width: double.infinity,
height: 40,
child: TextButton(
onPressed: verifyCode,
style: TextButton.styleFrom(
backgroundColor: Theme.of(context).primaryColor),
child: loading
? _loader()
: Text(
'Verify',
style: TextStyle(color: Colors.white),
)),
),
if (errorMessage != null) ...[
SizedBox(
height: 30,
),
_errorWidget()
],
if (successMessage != null) ...[
SizedBox(
height: 30,
),
_successWidget()
]
],
),
),
);
}
_loader() => SizedBox(
height: 15,
width: 15,
child: CircularProgressIndicator(
strokeWidth: 2,
valueColor: AlwaysStoppedAnimation(Colors.white),
),
);
_errorWidget() => Material(
borderRadius: BorderRadius.circular(5),
color: Colors.red.withOpacity(.1),
child: Padding(
padding: EdgeInsets.symmetric(vertical: 10, horizontal: 15),
child: Row(
children: [
Expanded(
child: Text(
errorMessage,
style: TextStyle(color: Colors.red),
)),
IconButton(
icon: Icon(
Icons.close,
size: 16,
),
onPressed: () => changeErrorMessage(null))
],
),
),
);
_successWidget() => Material(
borderRadius: BorderRadius.circular(5),
color: Colors.green.withOpacity(.1),
child: Padding(
padding: EdgeInsets.symmetric(vertical: 10, horizontal: 15),
child: Row(
children: [
Expanded(
child: Text(
successMessage,
style: TextStyle(color: Colors.green),
)),
IconButton(
icon: Icon(
Icons.close,
size: 16,
),
onPressed: () => changeSuccessMessage(null))
],
),
),
);
}
Download Details:
Author:
Source Code: https://pub.dev/packages/twilio_phone_verify
1656193861
Hello guys, Today in this post we’ll learn How to Create a Simple Login Page with a fantastic design. To create it we are going to use pure CSS and HTML. Hope you enjoy this post.
A login page is one of the most important component of a website or app that allows authorized users to access an entire site or a part of a website. You would have already seen them when visiting a website. Let's head to create it.
Whether it’s a signup or login page, it should be catchy, user-friendly and easy to use. These types of Forms lead to increased sales, lead generation, and customer growth.
Demo
Click to watch demo!
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">
<link rel="stylesheet" href="styledfer.css">
</head>
<body>
<div id="login-form-wrap">
<h2>Login</h2>
<form id="login-form">
<p>
<input type="email" id="email" name="email" placeholder="Email " required><i class="validation"><span></span><span></span></i>
</p>
<p>
<input type="password" id="password" name="password" placeholder="Password" required><i class="validation"><span></span><span></span></i>
</p>
<p>
<input type="submit" id="login" value="Login">
</p>
</form>
<div id="create-account-wrap">
<p>Don't have an accout? <a href="#">Create One</a><p>
</div>
</div>
<script src='https://code.jquery.com/jquery-2.2.4.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.0/jquery.validate.min.js'></script>
</body>
</html>
body {
background-color: #020202;
font-size: 1.6rem;
font-family: "Open Sans", sans-serif;
color: #2b3e51;
}
h2 {
font-weight: 300;
text-align: center;
}
p {
position: relative;
}
a,
a:link,
a:visited,
a:active {
color: #ff9100;
-webkit-transition: all 0.2s ease;
transition: all 0.2s ease;
}
a:focus, a:hover,
a:link:focus,
a:link:hover,
a:visited:focus,
a:visited:hover,
a:active:focus,
a:active:hover {
color: #ff9f22;
-webkit-transition: all 0.2s ease;
transition: all 0.2s ease;
}
#login-form-wrap {
background-color: #fff;
width: 16em;
margin: 30px auto;
text-align: center;
padding: 20px 0 0 0;
border-radius: 4px;
box-shadow: 0px 30px 50px 0px rgba(0, 0, 0, 0.2);
}
#login-form {
padding: 0 60px;
}
input {
display: block;
box-sizing: border-box;
width: 100%;
outline: none;
height: 60px;
line-height: 60px;
border-radius: 4px;
}
#email,
#password {
width: 100%;
padding: 0 0 0 10px;
margin: 0;
color: #8a8b8e;
border: 1px solid #c2c0ca;
font-style: normal;
font-size: 16px;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
position: relative;
display: inline-block;
background: none;
}
#email:focus,
#password:focus {
border-color: #3ca9e2;
}
#email:focus:invalid,
#password:focus:invalid {
color: #cc1e2b;
border-color: #cc1e2b;
}
#email:valid ~ .validation,
#password:valid ~ .validation
{
display: block;
border-color: #0C0;
}
#email:valid ~ .validation span,
#password:valid ~ .validation span{
background: #0C0;
position: absolute;
border-radius: 6px;
}
#email:valid ~ .validation span:first-child,
#password:valid ~ .validation span:first-child{
top: 30px;
left: 14px;
width: 20px;
height: 3px;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
}
#email:valid ~ .validation span:last-child
#password:valid ~ .validation span:last-child
{
top: 35px;
left: 8px;
width: 11px;
height: 3px;
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
}
.validation {
display: none;
position: absolute;
content: " ";
height: 60px;
width: 30px;
right: 15px;
top: 0px;
}
input[type="submit"] {
border: none;
display: block;
background-color: #ff9100;
color: #fff;
font-weight: bold;
text-transform: uppercase;
cursor: pointer;
-webkit-transition: all 0.2s ease;
transition: all 0.2s ease;
font-size: 18px;
position: relative;
display: inline-block;
cursor: pointer;
text-align: center;
}
input[type="submit"]:hover {
background-color: #ff9b17;
-webkit-transition: all 0.2s ease;
transition: all 0.2s ease;
}
#create-account-wrap {
background-color: #eeedf1;
color: #8a8b8e;
font-size: 14px;
width: 100%;
padding: 10px 0;
border-radius: 0 0 4px 4px;
}
Congratulations! You have now successfully created our Simple Login Page in HTML and CSS.
My Website: codewithayan, see this to checkout all of my amazing Tutorials.
1625135100
Learn how to create a login and register android app using email with the firebase library. In this part 8 of the series , we will verify the email address of the user using firebase.
Playlist: https://www.youtube.com/playlist?list=PLlGT4GXi8_8dm7OeLB5SiVZAPXeSq9i2Z
Need Help?
Join our Facebook Group: fb.com/groups/smallacademy
Source Code: github.com/bikashthapa01
#email address #email #login & register app #firebase #java
1665504051
Chile #Phone #Number #Database can help you with marketing. In fact, you can get in touch with Chileans with mobile number list. Buy Chile Cell Phone Number list is now available on B2B Phone List.
1665503024
Cambodia #Phone #Number #Database gives you the best b2c leads at a cheap price. Cambodia Cell Phone Number list will allow you to reach a lot of potential customers in a short time. Buy Cambodia mobile phone number list at a low price in B2B Phone List.
1665503647
Canada #Phone #Number #Database is now available on B2B Phone List. We are offering Canada Cell phone Number list at a low price. Bulk SMS also lets you get in touch with a lot of people quickly. Buy Canada mobile phone number list from us now so easy.