Untitled
unknown
plain_text
6 months ago
1.8 kB
8
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