🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / FLUTTER / TabBarView TabView DefaultTabController Widget kullanımı

1-) FLUTTER - TabBarView TabView DefaultTabController Widget kullanımı

 

kaynak : https://www.geeksforgeeks.org/flutter-tabview-widget/

 

EKRAN GÖRÜNTÜSÜ

 

 

1-) KULLANIMI

 

home: MinibarContent()

 

2-) minibarContent.dart


import 'package:flutter/material.dart';

class MinibarContent extends StatefulWidget {

  
MinibarContent({ Key? key}) : super(key: key);

  
@override
  
_MinibarPageState createState() => _MinibarPageState();
}

class _MinibarPageState extends State<MinibarContent> {


  
@override
  
void initState() {
    
// TODO: implement initState
    
super.initState();
  }

  
@override
  
Widget build(BuildContext context) {
    
return MaterialApp(

      home:
DefaultTabController(
        length:
3,
        child:
Scaffold(
          appBar:
AppBar(
            title:
Text("GeeksForGeeks"),
            bottom:
TabBar(
              tabs: [
                
Tab(
                  icon:
Icon(Icons.home_filled),
                  text:
"Home",
                ),
                
Tab(
                  icon:
Icon(Icons.account_box_outlined),
                  text:
"Account",
                ),
                
Tab(
                  icon:
Icon(Icons.alarm),
                  text:
"Alarm",
                ),
              ],
            ),
          ),
          body:
TabBarView(
            children: [
              
Center(
                child:
Icon(Icons.home),
              ),
              
Center(
                child:
Icon(Icons.account_circle),
              ),
              
Center(
                child:
Icon(Icons.alarm),
              )
            ],
          ),
        ),
      ),
    );
  }
}

 

 

3-) AYRICA YUVARLAK YAPMAK İSTERSEN RESİMDEKİ GİBİ

 

dependencies:
bubble_tab_indicator:
"^0.1.5"

import 'package:bubble_tab_indicator/bubble_tab_indicator.dart';

new TabBar(
indicatorSize:
TabBarIndicatorSize.tab,
indicator:
BubbleTabIndicator(
indicatorHeight:
25.0,
indicatorColor:
Colors.blueAccent,
tabBarIndicatorSize:
TabBarIndicatorSize.tab,
// Other flags
// indicatorRadius: 1,
// insets: EdgeInsets.all(1),
// padding: EdgeInsets.all(10)
),
)

 

kaynak : https://github.com/vipulasri/flutter_bubble_tab_indicator

 

 

 

 

4-)***************DİNAMİK ŞEKİLDE YAPILIŞI*******************

 

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


class MinibarContent extends StatefulWidget {
  
MinibarContent({Key? key}) : super(key: key);

  
@override
  
_MinibarPageState createState() => _MinibarPageState();
}

class UrunModel {
  
String kategori = "";
  
List<String> urunList = [];
}

class _MinibarPageState extends State<MinibarContent> {
  
List<Tab> tabList = [];

  
List<UrunModel> urunModels = [];

  
List<Widget> urunWidgets = [];

  
@override
  
void initState() {
    
// TODO: implement initState
    
super.initState();

    
UrunModel urunModel = new UrunModel();
    
urunModel.kategori = "İÇECEKLER";
    
urunModel.urunList = ["KOLA", "AYRAN"];
    
urunModels.add(urunModel);

    
urunModel = new UrunModel();
    
urunModel.kategori = "YİYECEKLER";
    
urunModel.urunList = ["DÖNER", "PİZZA"];
    
urunModels.add(urunModel);

    
urunModels.forEach((urunler) {

      
Tab tab = Tab(text: urunler.kategori);
      
tabList.add(tab);

      
var widget = SingleChildScrollView(
        child:
Column(
          children: getUrunContainer(urunler.
urunList),
        ),
      );

      
urunWidgets.add(widget);

    });
  }

  
List<Widget> getUrunContainer(List<String> urunList){
    
List<Widget> urunlerim =[];

    urunList.asMap().forEach((key, urunAd) {

      
var card =    Card(
        shape:
RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
        elevation:
3,
        child:
Padding(
          padding:
EdgeInsets.only(left: 10, right: 10, top: 10, bottom: 10),
          child:
Row(
            children: [
              
Expanded(
                  flex:
55,
                  child:
Container(
                      child:
Text(
                        urunAd,
                        style:
TextStyle(fontWeight: FontWeight.normal, fontSize: 12.5),
                      ))),
              
Expanded(
                  flex:
25,
                  child:
Container(
                      child:
Text(
                        
"55,00",
                        style:
TextStyle(fontWeight: FontWeight.bold, fontSize: 12.5),
                      ))),
              
Expanded(
                  flex:
20,
                  child:
Container(
                      child:
Text(
                        
"EURO",
                        style:
TextStyle(fontWeight: FontWeight.bold, fontSize: 12.5),
                      ))),
            ],
          ),
        ),
      );

      
urunlerim.add(card);
    });



    
return urunlerim;
  }

  
@override
  
Widget build(BuildContext context) {
    
return DefaultTabController(
      length:
2,
      child:
Container(
        
// container içine alıp yükseklik verirsen scroll ozellıgını kapatmış olursun hata almazsın
        
height: MediaQuery.of(context).size.height - 130,
        child:
Scaffold(
          appBar:
AppBar(
            toolbarHeight:
0,
            title:
Text(""),
            bottom:
TabBar(
              indicatorSize:
TabBarIndicatorSize.tab,
              indicator:
BubbleTabIndicator(
                indicatorHeight:
25.0,
                indicatorColor:
Colors.orange.shade800,
                tabBarIndicatorSize:
TabBarIndicatorSize.tab,
                
// Other flags
                // indicatorRadius: 1,
                
insets: EdgeInsets.only(top: -3, bottom: -3),
                
// padding: EdgeInsets.all(10)
              
),
              tabs:
tabList,
            ),
          ),
          body:
TabBarView(
            children:
urunWidgets,
          ),
        ),
      ),
    );
  }
}

 

 

 2022 Mart 20 Pazar
 367