美文网首页
12. 底部导航栏

12. 底部导航栏

作者: 努力生活的西鱼 | 来源:发表于2021-11-19 16:04 被阅读0次
1. 底部导航栏

底部导航栏,是每个APP必备的组件,今天就来实现整个功能,当点击选项的时候,可以切换上面的页面

2. 主页
class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: "底部导航栏",
      home: BottomNavigationWidget(),
    );
  }

}
3. 底部导航栏
class BottomNavigationWidget extends StatefulWidget {

  const BottomNavigationWidget({Key? key}) : super(key: key);

  @override
  State<StatefulWidget> createState() {
    return _BottomNavigationWidget();
  }
}

class _BottomNavigationWidget extends State<BottomNavigationWidget> {
  final bottomNavigationColor = Colors.blue;

  int currentIndex = 0;

  List<Widget> pagesList = List.empty(growable: true);

  @override
  void initState() {
    pagesList
      ..add(HomeScreen())
      ..add(EmailScreen())
      ..add(PagesScreen())
      ..add(AirplayScreen());
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: pagesList[currentIndex],
      bottomNavigationBar: BottomNavigationBar(
        items: [
          BottomNavigationBarItem(
              icon: Icon(
                Icons.home,
                color: bottomNavigationColor,
              ),
              title:
                  Text("Home", style: TextStyle(color: bottomNavigationColor))),
          BottomNavigationBarItem(
              icon: Icon(
                Icons.email,
                color: bottomNavigationColor,
              ),
              title: Text("Email",
                  style: TextStyle(color: bottomNavigationColor))),
          BottomNavigationBarItem(
              icon: Icon(
                Icons.pages,
                color: bottomNavigationColor,
              ),
              title: Text("Pages",
                  style: TextStyle(color: bottomNavigationColor))),
          BottomNavigationBarItem(
              icon: Icon(
                Icons.airplay,
                color: bottomNavigationColor,
              ),
              title: Text("Airplay",
                  style: TextStyle(color: bottomNavigationColor))),
        ],
        currentIndex: currentIndex,
        onTap: (int index) {
          setState(() {
            currentIndex = index;
          });
        },
      ),
    );
  }
}
4. 上面切换的页面
class HomeScreen extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("Home"),
      ),
      body: const Center(
        child: Text("Home"),
      ),
    );
  }

}

相关文章

网友评论

      本文标题:12. 底部导航栏

      本文链接:https://www.haomeiwen.com/subject/iwfetrtx.html