【flutter项目实战】第六节在flutter项目中使用getx创建底部tab如何实现左右页面切换

一 使用PageView实现左右切换

修改lib\app\modules\tabs\\controllers\\tabs_controller.dart

 //增加一个新的变量,默认值为0
 PageController pageController = PageController(initialPage: 0);

修改 lib\app\modules\tabs\\views\\tabs_view.dart

import 'package:flutter/material.dart';

import 'package:get/get.dart';

import '../controllers/tabs_controller.dart';

class TabsView extends GetView<TabsController> {
  const TabsView({Key? key}) : super(key: key);

  
  Widget build(BuildContext context) {
    return Obx(() => Scaffold(
          //删除原先的Body,用PageView包裹
          body: PageView(
            controller: controller.pageController,
            children: controller.pages,
            onPageChanged: (index){
              controller.setCurrentIndex(index);
            },
          ),
          bottomNavigationBar: BottomNavigationBar(
            fixedColor: Colors.red,
            currentIndex: controller.currentIndex.value,
            type: BottomNavigationBarType.fixed,
            onTap: (index) {
              controller.setCurrentIndex(index);
              //增加跳转页面功能,否则底部tab不会切换
              controller.pageController.jumpToPage(index);
            },
            items: const [
              BottomNavigationBarItem(
                icon: Icon(Icons.home),
                label: "首页",
              ),
              BottomNavigationBarItem(
                icon: Icon(Icons.shopping_cart),
                label: "购物车",
              ),
              BottomNavigationBarItem(
                icon: Icon(Icons.people),
                label: "用户",
              ),
            ],
          ),
        ));
  }
}

至此,功能已完成

git地址:git@github.com:winnietherpooh/learn-flutter.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Call me 兽医

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值