FloatingActionButton Nedir? Nasıl Kullanılır?

Flutter FloatingActionButton (FAB) Widget – Class

Uygulamalarda çok sık gördüğümüz bir buton türü olan FloatingActionButton, FAB buton, diye de adlandırılır. Türkçeye kayar yüzer buton olarak çevirebiliriz. Float yüzmek anlamına gelir.

Scaffold içerisinde floatingActionButton parametresine verilerek kullanılır ve diğer widgetlar bu butonu etkilemez. Ekranda sabit olarak kalır. Ekranın farklı noktalarına yerleştirilebilir. Farklı şekillerde ve renklerde oluşturulabilir. Aşağıda görselini attığım buton türüdür.

FloatingActionButton FAB Örnekleri

FloatingActionButton (FAB) Oluşturulması

Scaffold içerisinde foatingActionButton parametresine FloatingActionButton widget’ını vererek oluşturuyoruz.

İlk oluşturma anında floatActionButton: FloatActionButton() olarak verebiliriz. Varsayılan olarak orta boyutta içerisine icon koyabileceğimiz bir buton oluşuyor. Aşağıdaki gibi.

FloatingActionButton
import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text("Floating Action Button"),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () {},
          heroTag: "AnaSayfa",
          child: const Icon(Icons.add),
        ),
      ),
    ));

FloatingActionButton (FAB) Özellikleri

FAB butonunu ilk oluştururken sonuna nokta koyduğumuzda bize aşağıda görseldeki gibi üç seçenek sunuyor.

FloatActionButton (FAB) - extended - large - small

FloatActionButton.extended

extended dediğimizde içerisine bir child parametresi almıyor.

label parametresi ile butonun üstüne bir yazı ve yine içerisinde bulunan icon parametresi ile bir icon alıp aynı anda kullanabiliriz.

FloatingActionButton.extended
FloatingActionButton.extended
FloatingActionButton
import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text("Floating Action"),
        ),
        floatingActionButtonLocation: FloatingActionButtonLocation.endTop,
        //Scaffold içerisinde konumunu değiştirebiliriz
        floatingActionButton: FloatingActionButton.extended(
          onPressed: () {},
          //Tıklanınca çalışacak olan fonksiyon
          heroTag: "AnaSayfa",
          //Birden fazla buton olursa karışmasın diye butona özgü isim
          backgroundColor: Colors.deepPurple,
          //arkaplan rengi
          foregroundColor: Colors.white,
          //içerisine koyduklarımızın rengi
          label: const Text("Tamamdır"),
          //butona bir yazı yazdık
          icon: const Icon(Icons.thumb_up),
          //butona icon verdik
        ),
      ),
  debugShowCheckedModeBanner: false,
    ));

FloatActionButton.large

FloatingActionButton.large

FloatActionButton.small

FloatingActionButton.small

FloatingActionButton onPressed:

İçerisinde onPressed parametresi mecburen verilmelidir. Bizden bir fonksiyon istiyor. Butona basılınca ne olacağını fonksiyon olarak burada belirtmeliyiz.

onPressed: () {},
//içerisine çalışmasını istediğimiz fonksiyonu yazıyoruz.

FloatingActionButton heroTag:

Birden fazla FloatingActionButton kullandığımızda bu etiket hata çıkmasını önlüyor. Butona özel bir isim.

        floatingActionButton: FloatingActionButton.large(
          onPressed: () {},
          heroTag: "AnaSayfa",
          backgroundColor: Colors.deepPurple,
          foregroundColor: Colors.black,
          child: const Icon(Icons.add),
        ),

FloatingActionButton child:

İçerisine bir Widget alıyor, genelde Icon Widget’ı konulur, bir Text Widget’ı da verebiliriz.

FloatingActionButton backgroundColor:

Butonun arka plan rengini değiştirebiliriz.

        floatingActionButton: FloatingActionButton.large(
          onPressed: () {},
          backgroundColor: Colors.deepPurple,
          child: const Icon(Icons.add),
        ),

FloatingActionButton forgroundColor:

Butonun child özelliğine verdiğimiz widget’ın rengini değiştirir.

        floatingActionButton: FloatingActionButton.large(
          onPressed: () {},
          backgroundColor: Colors.deepPurple,
          foregroundColor: Colors.black,
          child: const Icon(Icons.add),
        ),

FloatingActionButton mini:

true yada false alır. true değeri alırsa butonun boyutunu küçültür.

        floatingActionButton: FloatingActionButton(
          onPressed: () {},
          mini: true,
          child: const Icon(Icons.add),
        ),

FloatingActionButton tooltip:

Butonun üzerine basık tuttuğumuzda ipucu verir.

tooltip: "AnaSayfa",

FloatingActionButton shape:

Butonun şekli ile ilgili ayarlar yapılabilir. Örneğin kenarlarına border verilebilir, radius ayarları yapılabilir.

FloatingActionButton shape:
import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text("Floating Action"),
        ),
        floatingActionButtonLocation: FloatingActionButtonLocation.endFloat,
        floatingActionButton: FloatingActionButton.extended(
          onPressed: () {},
          backgroundColor: Colors.deepPurple,
          foregroundColor: Colors.white,
          shape: const RoundedRectangleBorder(
            borderRadius: BorderRadius.all(Radius.elliptical(10, 10)),
            side: BorderSide(
                color: Colors.blue, style: BorderStyle.solid, width: 3),
          ),
          label: const Text(
            "Merhaba Flutter",
            style: TextStyle(fontSize: 20),
          ),
          icon: const Icon(Icons.add_alert),
        ),
      ),
      debugShowCheckedModeBanner: false,
    ));

FloatingActionButton Konumlandırma

FAB butonumuzun konumunu değiştirmek için Scaffold içerisinde floatingActionButtonLocation parametresine özellikler verilebilir.

Özellik çok fazla olduğu için aşağıda bir örnek yaptım.

Örneğimiz;

import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text("Floating Action"),
        ),
        floatingActionButtonLocation: FloatingActionButtonLocation.,
        floatingActionButton: FloatingActionButton.large(
          onPressed: () {},
          heroTag: "AnaSayfa",
          backgroundColor: Colors.deepPurple,
          foregroundColor: Colors.black,
          child: const Icon(Icons.add),
        ),
      ),
    ));

FloatingActionButton Uygulama Örnekleri

Aşağıdaki örnekte BottomAppBar kullanarak en alt tarafa bir araç çubuğu yerleştirdik.

BottomAppBar’ımızın içerisine bir Row kullanarak içerisine ikitane IconButton almasını sağladık.

shape: CircularNotchedRectangle() özelliğini kullandık ve FloatingActionButton’umuz üstünde bu şekilde konumlandı.

FloatingActionButton Uygulama Örnekleri
import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text("Floating Action"),
        ),
        floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
        bottomNavigationBar: BottomAppBar(
          shape: CircularNotchedRectangle(),
          color: Colors.lime,

          child: Row(
            mainAxisSize: MainAxisSize.max,
            mainAxisAlignment: MainAxisAlignment.spaceAround,
            children: <Widget>[
              IconButton(
                icon: Icon(Icons.delete, color: Colors.black, size: 40,),
                onPressed: () {},
              ),
              IconButton(
                icon: Icon(Icons.favorite, color: Colors.pink,size: 40,),
                onPressed: () {},
              ),
            ],
          ),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () {},
          heroTag: "AnaSayfa",
          backgroundColor: Colors.deepPurple,
          foregroundColor: Colors.white,
          child: Icon(Icons.add,),

        ),
      ),
      debugShowCheckedModeBanner: false,
    ));

Bir başka örnek;

import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text("Floating Action"),
        ),
        floatingActionButtonLocation: FloatingActionButtonLocation.endFloat,
        bottomNavigationBar: BottomAppBar(
          color: Colors.limeAccent,
          child: Row(
            mainAxisSize: MainAxisSize.max,
            mainAxisAlignment: MainAxisAlignment.spaceAround,
            children: <Widget>[
              IconButton(
                icon: Icon(
                  Icons.menu,
                  color: Colors.black,
                  size: 40,
                ),
                onPressed: () {},
              ),
              IconButton(
                icon: Icon(
                  Icons.add_a_photo,
                  color: Colors.blue,
                  size: 40,
                ),
                onPressed: () {},
              ),
              IconButton(
                icon: Icon(
                  Icons.delete,
                  color: Colors.black,
                  size: 40,
                ),
                onPressed: () {},
              ),
              IconButton(
                icon: Icon(
                  Icons.favorite,
                  color: Colors.pink,
                  size: 40,
                ),
                onPressed: () {},
              ),
            ],
          ),
        ),
        floatingActionButton: FloatingActionButton.extended(
          onPressed: () {},
          heroTag: "AnaSayfa",
          backgroundColor: Colors.deepPurple,
          foregroundColor: Colors.white,
          label: Text(
            "Merhaba Flutter",
            style: TextStyle(fontSize: 20),
          ),
          icon: Icon(Icons.add_alert),
        ),
      ),
      debugShowCheckedModeBanner: false,
    ));

Birden fazla Floating Action Button Oluşturmak

direction: Axis.horizontal, yerine direction: Axis.vertical, yazarsanız butonlar üst üste yer alırlar.

import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text("Floating Action"),
        ),
        floatingActionButtonLocation: FloatingActionButtonLocation.endFloat,
        floatingActionButton: Wrap(
          direction: Axis.horizontal,
          children: <Widget>[
            Container(
                margin: const EdgeInsets.all(15),
                child: FloatingActionButton(
                  onPressed: () {
                    //action code for button 1
                  },
                  child: const Icon(Icons.add),
                )), //button first

            Container(
                margin: const EdgeInsets.all(15),
                child: FloatingActionButton(
                  onPressed: () {},
                  backgroundColor: Colors.green,
                  child: const Icon(Icons.add),
                )),

            Container(
                margin: const EdgeInsets.all(15),
                child: FloatingActionButton(
                  onPressed: () {},
                  backgroundColor: Colors.deepOrangeAccent,
                  child: const Icon(Icons.add),
                )),

            // Add more buttons here
          ],
        ),
      ),
      debugShowCheckedModeBanner: false,
    ));

Birden fazla Floating Action Button Dikey Konumda

import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text("Floating Action"),
        ),
        floatingActionButtonLocation: FloatingActionButtonLocation.endFloat,
        floatingActionButton: Wrap(
          direction: Axis.vertical,
          children: <Widget>[
            Container(
                margin: const EdgeInsets.all(15),
                child: FloatingActionButton(
                  shape:const BeveledRectangleBorder(
                      borderRadius: BorderRadius.zero
                  ),
                  onPressed: () {

                  },
                  child: const Icon(Icons.add),
                )),

            Container(
                margin: const EdgeInsets.all(15),
                child: FloatingActionButton(
                  shape:const BeveledRectangleBorder(
                      borderRadius: BorderRadius.zero
                  ),
                  onPressed: () {},
                  backgroundColor: Colors.green,
                  child: const Icon(Icons.add),

                )),

            Container(
                margin: const EdgeInsets.all(15),
                child: FloatingActionButton(
                  shape:const BeveledRectangleBorder(
                      borderRadius: BorderRadius.zero
                  ),
                  onPressed: () {},
                  backgroundColor: Colors.deepOrangeAccent,
                  child: const Icon(Icons.add),

                )),

            // Add more buttons here
          ],
        ),
      ),
      debugShowCheckedModeBanner: false,
    ));

Şimdilik benden bu kadar,,,

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir