// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Flutter code sample for CupertinoTabController

import 'package:flutter/cupertino.dart';

void main() => runApp(const TabControllerApp());

class TabControllerApp extends StatelessWidget {
  const TabControllerApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const CupertinoApp(
      theme: CupertinoThemeData(brightness: Brightness.light),
      home: TabControllerExample(),
    );
  }
}

class TabControllerExample extends StatefulWidget {
  const TabControllerExample({super.key});

  @override
  State<TabControllerExample> createState() => _TabControllerExampleState();
}

class _TabControllerExampleState extends State<TabControllerExample> {
  final CupertinoTabController controller = CupertinoTabController();

  @override
  void dispose() {
    controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return CupertinoTabScaffold(
      controller: controller,
      tabBar: CupertinoTabBar(
        items: const <BottomNavigationBarItem>[
          BottomNavigationBarItem(
            icon: Icon(CupertinoIcons.square_grid_2x2_fill),
            label: 'Browse',
          ),
          BottomNavigationBarItem(
            icon: Icon(CupertinoIcons.star_circle_fill),
            label: 'Starred',
          ),
        ],
      ),
      tabBuilder: (BuildContext context, int index) {
        return Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text('Content of tab $index'),
              const SizedBox(height: 10),
              CupertinoButton(
                onPressed: () => controller.index = 0,
                child: const Text('Go to first tab'),
              ),
            ],
          )
        );
      },
    );
  }
}
