TabBar on bottom of app with Column

后端 未结 1 1716
春和景丽
春和景丽 2021-02-15 13:27

I am trying to put the TabBar on the bottom of the app.

It worked so far, yet I can\'t get the pages to work (TabBarView). It just looks black and unresponsive. The TabB

1条回答
  •  遇见更好的自我
    2021-02-15 14:00

    I fixed your code, take a look.

      class Bookkeeper extends StatelessWidget {
        @override
        Widget build(BuildContext context) {
          return MaterialApp(
            home: DefaultTabController(
              length: 4,
              child: Scaffold(
                appBar: AppBar(
                  backgroundColor: Color(0xFF3F5AA6),
                  title: Text("Title text"),
                  bottom: menu(),
                ),
                body: TabBarView(
                  children: [
                    Container(child: Icon(Icons.directions_car)),
                    Container(child: Icon(Icons.directions_transit)),
                    Container(child: Icon(Icons.directions_bike)),
                    Container(child: Icon(Icons.directions_bike)),
                  ],
                ),
              ),
            ),
          );
        }
    
        Widget menu() {
          return TabBar(
            tabs: [
              Tab(
                text: "Transactions",
                icon: Icon(Icons.euro_symbol),
              ),
              Tab(
                text: "Bills",
                icon: Icon(Icons.assignment),
              ),
              Tab(
                text: "Balance",
                icon: Icon(Icons.account_balance_wallet),
              ),
              Tab(
                text: "Options",
                icon: Icon(Icons.settings),
              ),
            ],
          );
        }
      }
    

    You have to create a scaffold in order to use the AppBar, then put the tabs inside the bottom property.

    UPDATE

    Using bottomNavigationBar to positioned the Tabs at the bottom of the screen

      class Bookkeeper extends StatelessWidget {
        @override
        Widget build(BuildContext context) {
          return MaterialApp(
            home: DefaultTabController(
              length: 4,
              child: Scaffold(
                appBar: AppBar(
                  backgroundColor: Color(0xFF3F5AA6),
                  title: Text("Title text"),
                ),
                bottomNavigationBar: menu(),
                body: TabBarView(
                  children: [
                    Container(child: Icon(Icons.directions_car)),
                    Container(child: Icon(Icons.directions_transit)),
                    Container(child: Icon(Icons.directions_bike)),
                    Container(child: Icon(Icons.directions_bike)),
                  ],
                ),
              ),
            ),
          );
        }
    
         Widget menu() {
    return Container(
      color: Color(0xFF3F5AA6),
      child: TabBar(
        labelColor: Colors.white,
        unselectedLabelColor: Colors.white70,
        indicatorSize: TabBarIndicatorSize.tab,
        indicatorPadding: EdgeInsets.all(5.0),
        indicatorColor: Colors.blue,
        tabs: [
          Tab(
            text: "Transactions",
            icon: Icon(Icons.euro_symbol),
          ),
          Tab(
            text: "Bills",
            icon: Icon(Icons.assignment),
          ),
          Tab(
            text: "Balance",
            icon: Icon(Icons.account_balance_wallet),
          ),
          Tab(
            text: "Options",
            icon: Icon(Icons.settings),
          ),
        ],
      ),
    );
    

    } }

    0 讨论(0)
提交回复
热议问题