ویجت TabBar

تعداد بازدید ها : 953 بازدید
 ویجت TabBar

از ویجت TabBar جهت دسترسی سریع به فرم های پر کاربرد برنامه استفاده می شود . این ویجت می تواند تعدادی تب را ایجاد و مدیریت نماید . به عنوان نمونه در قطعه کد زیر با استفاده از خصوصیت bottom ویجت Scaffold و استفاده از یک TabBar نسبت به نمایش ۴ تب در بالای فرم و درست زیر AppBar اقدام شده است .

AppBar(
  // رنگ پس زمینه
  backgroundColor: Colors.white70,
  // جهت نمایش TabBar
  bottom: TabBar(
    controller: new TabController(length: 4, vsync: this),
    indicatorColor: Colors.white,  // رنگ حالت انتخاب زیر هر تب
    tabs: <Widget>[
        Tab(text: 'دوربین', icon: Icon(Icons.camera_alt),),
        Tab(text: 'چت ها', icon: Icon(Icons.chat),),
        Tab(text: 'وضعیت', icon: Icon(Icons.favorite_border),),
        Tab(text: 'تماس ها', icon: Icon(Icons.call),),
      ],
  ),
  // آیکون سمت چپ
  leading: Icon(Icons.camera_alt),
  // میزان سایه زیر AppBar
  elevation: 1.0,
  // متن سمت چپ یا وسط
  title: Text('اپلیکیشن من'),
  // متن را وسط چین کردهاست
  centerTitle: true,
  // لیستی از آیکون های سمت راست
  actions: <Widget>[
    IconButton(icon: Icon(Icons.search),onPressed: null,),
    IconButton(icon: Icon(Icons.favorite),onPressed: null,),
    IconButton(icon: Icon(Icons.send),onPressed: null,),
  ],
)

در خط ۵ کد فوق ، از ویجت TabBar جهت مقدار دهی به خصوصیت bottom ویجت Scaffold استفاده شده است . همچنین در خط ۶ به خصوصیت controller یک متغییر از نوع TabController ارجاع داده شده است که وظیفه شناسایی تب انتخاب شده را بر عهده دارد . در صورت تمایل می توانید این متغییر را در بیرون از بدنه کد TabBar و در داخل کلاس State تعریف نمایید تا رویداد تغییر انتخاب تب ها را شناسایی و با کمک ویجت TabBarView ، واکنش مناسب را نشان دهید . (ویجت TabBarView به ترتیب تب های موجود در TabBar از لیست childern خود ویجت انتخاب و نمایش می دهد)

می خوانم   ویجت CircularProgressIndicator

به عنوان نمونه به قطعه کد زیر دقت نمایید :

class _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin {
  TabController tabController;

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    tabController = new TabController(initialIndex: 1, length: 4, vsync: this);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      AppBar(
        // رنگ پس زمینه
        backgroundColor: Colors.white70,
        // آیکون سمت چپ
        leading: Icon(Icons.camera_alt),
        // میزان سایه زیر AppBar
        elevation: 1.0,
        // متن سمت چپ یا وسط
        title: Text('اپلیکیشن من'),
        // متن را وسط چین می کند
        centerTitle: true,
        // لیستی از آیکون های سمت راست
        actions: <Widget>[
          IconButton(icon: Icon(Icons.search),onPressed: null,),
          IconButton(icon: Icon(Icons.favorite),onPressed: null,),
          IconButton(icon: Icon(Icons.send),onPressed: null,),
        ],
        // جهت نمایش TabBar
        bottom: TabBar(
          controller: tabController,
          indicatorColor: Colors.white,  // رنگ حالت انتخاب زیر هر تب
          tabs: <Widget>[
              Tab(text: 'دوربین', icon: Icon(Icons.camera_alt),),
              Tab(text: 'چت ها', icon: Icon(Icons.chat),),
              Tab(text: 'وضعیت', icon: Icon(Icons.favorite_border),),
              Tab(text: 'تماس ها', icon: Icon(Icons.call),),
            ],
        ),
        body: TabBarView(
          controller: tabController,
          children: <Widget>[
            CameraScreen(),
            ChatScreen(),
            StatusScreen(),
            CallScreen()
          ],
        ),
      );
  }
}

همانطور که در خط ۴۲ کد فوق قابل مشاهده است ، به خصوصیت body ویجت Scaffold یک ویجت TabBarView ارجاع داده شده است که بر اساس مقدار متغییر tabController در رابطه با نمایش لیست ویجت های موجود در خصوصیت children خود تصمیم گیری می کند .

خروجی قطعه کد فوق در تصویر زیر قابل مشاهده است :

TabBar

جهت دریافت راهنمایی بیشتر می توانید از این آدرس به سایت اصلی فلاتر مراجعه نمایید .

امیدوارم این مطلب برای شما مفید باشد .

1+
محمدمجتبی جوارشکیان

محمدمجتبی جوارشکیان

من محمدمجتبی جوارشکیان ، کارشناس IT و فعال اجتماعی هستم و در حوزه معماری ، طراحی ، تحلیل گری ، مدلسازی و توسعه ی محیط های نرم افزاری فعالیت دارم . بسیار خوشحال می شوم من را از انتقادات ، پیشنهادات و نظرات خود مطلع فرمایید . آدرس ایمیل : info@javareshkian.ir

ارسال یک پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

8 − هفت =