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,
),
),
),
);
}
}