如何在Flutter 翼中实现这样的底部导航栏?

enter image description here

推荐答案

TabBarView小部件可能会有很大帮助

 import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.brown),
        useMaterial3: true,
      ),
      home: const MyHomePage(),
    );
  }
}

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

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
  late TabController tabController;
  @override
  void initState() {
    super.initState();
    tabController = TabController(
      initialIndex: 0,
      length: 4,
      vsync: this,
    );
  }

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        children: [
          TabBarView(
            controller: tabController,
            children: [
              Container(
                  color: Colors.red,
                  child: const Center(child: Text("Page 1"))),
              Container(
                  color: Colors.purple,
                  child: const Center(child: Text("Page 2"))),
              Container(
                  color: Colors.yellow,
                  child: const Center(child: Text("Page 3"))),
              Container(
                  color: Colors.orange,
                  child: const Center(child: Text("Page 4"))),
            ],
          ),
          Positioned(
            bottom: 0,
            right: 0,
            left: 0,
            child: Padding(
              padding: const EdgeInsets.all(28.0),
              child: Container(
                decoration: BoxDecoration(
                    color: Colors.white,
                    borderRadius: BorderRadius.circular(50)),
                child: Padding(
                  padding: const EdgeInsets.symmetric(
                      horizontal: 20.0, vertical: 20),
                  child: TabBar(
                    controller: tabController,
                    indicatorColor: Colors.transparent,
                    unselectedLabelColor: Colors.grey[110],
                    dividerColor: Colors.transparent,
                    tabs: const [
                      Icon(Icons.home),
                      Icon(Icons.heart_broken),
                      Icon(Icons.search),
                      Icon(Icons.account_circle_outlined),
                    ],
                  ),
                ),
              ),
            ),
          ),
        ],
      ),
    );
  }
}

enter image description here

Flutter相关问答推荐

如何在Flutter 屏幕中添加箭头形状

获取屏幕大小的滚动视图与动态大小?

ProviderContainer和GoRouter

DART 3.3:为什么扩展类型不起作用?

TextFormfield无法与自动路由一起正常工作

当键盘在抖动中打开时,如何才能看到包装在SingleChildScrollView中的列中的最后一个小工具?

如何实现Flutter 梳理机图像的小量移动

Android工作室Flutter 热重新加载更新后不工作

在使用FutureProvider时,我想显示用于加载的指示器,但无法自定义大小

dotenv:未处理的异常:FileNotFoundError的实例

处理 flutter/dart 模型中的空值

Flutter Firebase 升级后出现问题? ARC 语义问题 (Xcode): Select 器appleCredentialWithIDToken:rawNonce:fullName:没有已知的类方法

flutter 在文本字段中更改部分文本选定 colored颜色

如何对齐卡片小部件中的图标按钮?

Flutter snapShot.hasData 为假但响应有数据

Flutter HLS .m3u8 视频无法实时播放

Flutter 如何使用 ClipPath 编辑容器的顶部?

扩展磁贴尾随图标在与一个磁贴交互时更新列表中的所有内容.如何只更改展开图块的图标?

Flutter NavigationBar 忽略我的背景 colored颜色

如何从用户 Flutter 导航抽屉中隐藏管理菜单