Untitled
unknown
plain_text
a year ago
1.8 kB
12
Indexable
// email_provider.dart
import 'package:flutter/foundation.dart';
class EmailProvider extends ChangeNotifier {
String _email = '';
bool _isValid = false;
String get email => _email;
bool get isValid => _isValid;
void validateEmail(String value) {
_email = value;
_isValid = RegExp(r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$').hasMatch(value);
notifyListeners();
}
}
// email_screen.dart
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class EmailScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Email Validator'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: [
TextField(
decoration: InputDecoration(
labelText: 'Email',
border: OutlineInputBorder(),
),
onChanged: (value) =>
Provider.of<EmailProvider>(context, listen: false)
.validateEmail(value),
),
SizedBox(height: 10),
Consumer<EmailProvider>(
builder: (context, provider, child) {
return Text(
provider.isValid ? 'Valid Email' : 'Invalid Email',
style: TextStyle(
color: provider.isValid ? Colors.green : Colors.red,
),
);
},
),
],
),
),
);
}
}
// main.dart
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() {
runApp(
ChangeNotifierProvider(
create: (_) => EmailProvider(),
child: MaterialApp(
home: EmailScreen(),
),
),
);
}Editor is loading...
Leave a Comment