Bu yazımda, herhangi bir eklenti kullanmadan sıfırdan bir Flutter Şifre Güç Denetleyicisi nasıl oluşturulur onu göstereceğim.
Örnekte, aşağıdaki kriterlere göre bir şifre ölçümü yapacağız:
- 6 karakterden az uzunluk: Zayıf
- 6 karakterden 8 karaktere kadar uzunluk: Orta (kabul edilebilir ancak güçlü değil)
- 8 veya daha fazla karakter: Güçlü (ama en iyisi değil)
- 8 veya daha fazla karakter ve hem rakam hem de harf içeriren: Harika
Bir parolanın hem rakam hem de harf içerip içermediğini kontrol etmek için aşağıdaki RegExp ifadelerini kullanacağız.
RegExp numReg = RegExp(r".*[0-9].*");
RegExp letterReg = RegExp(r".*[A-Za-z].*");
if (!letterReg.hasMatch(_password) || !numReg.hasMatch(_password)) {
// Şifre hem harf hem de rakam karakterlerini içermiyor
} else {
// Şifre hem harf hem de rakam karakterlerini içeriyor
}
Örnek
Bu örnekte, parola gücünü LinearProgressIndicator ile göstereceğim. Ayrıca şifrenin gücü ortanın altında ise Devam butonu devre dışı kalacaktır.

Tam Kod
main.dart’ta kod açıklamaları birlikte.
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'onursahin.net',
theme: ThemeData(
primarySwatch: Colors.indigo,
),
home: const HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
const HomeScreen({Key? key}) : super(key: key);
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
late String _password;
double _strength = 0;
// 0: Şifre yok
// 1/4: Zayıf
// 2/4: Orta
// 3/4: Güçlü
// 1: Harika
RegExp numReg = RegExp(r".*[0-9].*");
RegExp letterReg = RegExp(r".*[A-Za-z].*");
String _displayText = 'Parolanızı girin';
void _checkPassword(String value) {
_password = value.trim();
if (_password.isEmpty) {
setState(() {
_strength = 0;
_displayText = 'Parolanızı girin';
});
} else if (_password.length < 6) {
setState(() {
_strength = 1 / 4;
_displayText = 'Parolanız çok kısa';
});
} else if (_password.length < 8) {
setState(() {
_strength = 2 / 4;
_displayText = 'Şifreniz kabul edilebilir seviyede fakat güçlü değil';
});
} else {
if (!letterReg.hasMatch(_password) || !numReg.hasMatch(_password)) {
setState(() {
// Parola Uzunluğu >= 8
// hem harf hem de rakam içermiyor
_strength = 3 / 4;
_displayText = 'Şifren Güçlü';
});
} else {
// Parola Uzunluğu >= 8
// Şifre hem harf hem de rakam içeriyor
setState(() {
_strength = 1;
_displayText = 'Şifren Harika';
});
}
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("onursahin.net | Parola Gücü"),
),
body: Padding(
padding: const EdgeInsets.all(30),
child: Column(
children: [
TextField(
onChanged: (value) => _checkPassword(value),
obscureText: true,
decoration: const InputDecoration(
border: OutlineInputBorder(), hintText: 'Parola'),
),
const SizedBox(
height: 30,
),
// Güç gösterge çubuğu
LinearProgressIndicator(
value: _strength,
backgroundColor: Colors.grey[300],
color: _strength <= 1 / 4
? Colors.red
: _strength == 2 / 4
? Colors.yellow
: _strength == 3 / 4
? Colors.blue
: Colors.green,
minHeight: 15,
),
const SizedBox(
height: 20,
),
// Girilen şifrenin gücü ile ilgili mesaj
Text(
_displayText,
style: const TextStyle(fontSize: 18),
),
const SizedBox(
height: 50,
),
// Parola gücü orta veya üzerindeyse bu düğme etkinleştirilecektir
ElevatedButton(
onPressed: _strength < 1 / 2 ? null : () {},
child: const Text('Devam'))
],
),
));
}
}
Herhangi bir eklenti kullanmadan Flutter’da bir parola gücü ölçer oluşturduk. Bu aşamadan sonra onu kendinize göre şekillendirebilir ve ölçüm kritlerleri ekleyebilirsiniz.