Bu yazımda, Flutter’da nasıl bulanıklık efektleri oluşturacağınızı göstereceğim. Anlatımımda 2 örnek üzerinden gideceğim.
İlk örneğimde, bulanıklaştırılmış arka plan görüntüsü oluşturacağım. İkinci örneğimde ise, AlertDialog (İletişim Kutusu) açıldığında pencerenin arka planında kalan görüntüyü bulanıklaştıracağım.
Flutter Blur Effects
Flutter’da bulanıklık efektleri oluşturmak için BackdropFilter ve ImageFilter.blur‘u kullanabilirsiniz.
BackdropFilter Yapıcısı
BackdropFilter({
Key? key,
required ImageFilter filter,
Widget? child
})
ImageFilter.blur Yapıcısı
ImageFilter.blur({
double sigmaX: 0.0,
double sigmaY: 0.0,
TileMode tileMode: TileMode.clamp
})
#Örnek 1: Flutter Arka Plan Bulanıklaştırma
Tam Kod:
import 'package:flutter/material.dart';
import 'dart:ui';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
// debug banneri kaldırma
debugShowCheckedModeBanner: false,
title: 'Flutter Blur',
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Container(
child: Scaffold(
body: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage(
'https://onursahin.net/wp-content/uploads/2021/05/etkili_manzara_11.jpg'),
fit: BoxFit.cover)),
child: BackdropFilter(
filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0),
child: Center(
child: Card(
elevation: 10,
color: Colors.black.withOpacity(0.6),
child: Container(
width: 280,
height: 130,
child: Center(
child: Text(
'We love Flutter',
style: TextStyle(fontSize: 20, color: Colors.white),
),
),
),
),
),
),
),
),
);
}
}
Kod Çıktısı:

#Örnek 2: İletişim Kutusu (AlertDialog) Gösterildiğinde Ekranı Bulanıklaştırma
Bu örnekte, bulanıklaştırma efekti sadece iletişim kutusu göründüğünde oluşacaktır. İletişim kutusu dışında ekrandaki her şeyi bulanıklaştırır. İletişim kutusu kapatıldığında, bulanıklık efekti de görünmeyecektir.
Tam Kod:
import 'package:flutter/material.dart';
import 'dart:ui';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
// debug banneri kaldırma
debugShowCheckedModeBanner: false,
title: 'Flutter Blur',
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
void _show() {
showDialog(
context: context,
barrierColor: Colors.transparent,
builder: (BuildContext ctx) {
return BackdropFilter(
filter: ImageFilter.blur(sigmaX: 5.0, sigmaY: 5.0),
child: AlertDialog(
elevation: 10,
title: Text('Flutter Blur'),
content: Text(' We love Flutter'),
actions: [
TextButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text('exit'))
],
),
);
});
}
@override
Widget build(BuildContext context) {
return Container(
child: Scaffold(
appBar: AppBar(),
body: Center(
child: Padding(
padding: const EdgeInsets.all(15),
child: Column(
children: [
Container(
width: double.infinity,
height: 200,
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage(
'https://onursahin.net/wp-content/uploads/2021/05/etkili_manzara_11.jpg'),
fit: BoxFit.cover)),
),
SizedBox(
height: 20,
),
Container(
width: double.infinity,
height: 200,
color: Colors.green,
),
SizedBox(
height: 20,
),
Container(
width: double.infinity,
height: 200,
color: Colors.amber,
)
],
),
),
),
floatingActionButton: FloatingActionButton(
onPressed: _show,
child: Icon(Icons.remove_red_eye),
),
),
);
}
}
Kod Çıktısı:
