Untitled

 avatar
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