TabBar常见属性
    image.png

    1. import 'package:flutter/material.dart';
    2. class AppBarDemoPage extends StatelessWidget {
    3. // const AppBarDemoPage({Key? key}) : super(key: key);
    4. @override
    5. Widget build(BuildContext context) {
    6. return DefaultTabController(
    7. length: 4, // AppBar元素的个数,必须对应,不然会报错
    8. child: Scaffold(
    9. appBar: AppBar(
    10. title: const Text("AppBarDemoPage"),
    11. leading: IconButton(
    12. icon: const Icon(Icons.menu),
    13. onPressed: (){
    14. },
    15. ),
    16. bottom: const TabBar(
    17. tabs: [
    18. Tab(
    19. text: "热门",
    20. ),
    21. Tab(
    22. text: "推荐",
    23. ),
    24. Tab(
    25. text: "搜索",
    26. ),
    27. Tab(
    28. text: "设置",
    29. )
    30. ],
    31. ),
    32. ),
    33. body: TabBarView(
    34. children: [
    35. ListView(
    36. children: const [
    37. ListTile(
    38. title: Text("热门页面"),
    39. ),
    40. ListTile(
    41. title: Text("推荐页面")
    42. ),
    43. ListTile(
    44. title: Text("搜索页面")
    45. ),
    46. ListTile(
    47. title: Text("设置页面")
    48. )
    49. ],
    50. ),
    51. ListView(
    52. children: const [
    53. ListTile(
    54. title: Text("推荐页面")
    55. ),
    56. ListTile(
    57. title: Text("搜索页面")
    58. ),
    59. ListTile(
    60. title: Text("设置页面")
    61. )
    62. ],
    63. ),
    64. ListView(
    65. children: const [
    66. ListTile(
    67. title: Text("搜索页面")
    68. ),
    69. ListTile(
    70. title: Text("设置页面")
    71. )
    72. ],
    73. ),
    74. ListView(
    75. children: const [
    76. ListTile(
    77. title: Text("设置页面")
    78. )
    79. ],
    80. )
    81. ],
    82. )
    83. )
    84. );
    85. }
    86. }

    效果图
    B73931D1806F4F57F6F96E30C0EDE857.jpg

    image.png

    Scaffold组件中的appBar中的title属性对应的其实是一个组件
    所以也可以把title变成一个TabBar

    有时候是需要这么做的
    比如根目录已经是一个Scaffold组件

    虽然这么做确实可以实现效果
    但是样式中会有一条阴影黑线
    有点丑陋

    74F687E89B5B9B19FA773669D106F866.jpg