美文网首页
Flutter(进阶)GetX+BottomNavigation

Flutter(进阶)GetX+BottomNavigation

作者: 辉涛 | 来源:发表于2021-03-24 19:15 被阅读0次

GetX是什么?

关于GetX是什么,git上面有官方文档,GetX
这里有一篇详细介绍GetX使用详解,GetX使用详解

无意间发现GetX

由于flutter2的发布,感觉还是有必要去了解flutter了,最近也是打算系统学习flutter,之前也是有过打算,基本没付诸行动,当我在看状态管理provider相关知识时,无意间发现了GetX这一神器,所以就打算把之前写的首页底部导航,部分功能使用GetX改造一番。当我升级了flutter sdk到最新版后,在控制台敲入flutter run 直接跑在了浏览器上,当时很惊讶,因为之前弄过一次是跑在手机上的,所以当时就决定是应该系统学习flutter,或许真的可以多一些机会。

install GetX

进入https://pub.dev/,直接搜索Getx, 然后Pub get

dependencies:
  get: ^3.26.0

具体实现

1,新建MainState,我自己把它认为状态管理,有点像android原生中的ViewModel,

class MainState {
  RxInt index;

  MainState() {
    index = 0.obs;
  }
}

2,新建MainLogic这里主要是进行逻辑控制,这里的使用我主要是借鉴上面文章当中提到的方案,如果觉得不了解,可以先认真读一下上面我给出的借鉴文章。

class MainLogic extends GetxController {
  MainState state = MainState();

   changeIndex(int index) {
    state.index.value = index;
  }
}

3,进行首页MainPage的编写

class MainPage extends StatefulWidget {
  _MainPageState createState() => _MainPageState();
}

class _MainPageState extends State<MainPage> {
  var _pageList;
  var _appBarTitles = ['首页', '订单', '我的'];
  var logic = Get.put(MainLogic());
  var mainState = Get.find<MainLogic>().state;
  List<BottomNavigationBarItem> _list;
  final _pageController = PageController();

  List<BottomNavigationBarItem> _buildBottomNavigationBarItem() {
    if (_list == null) {
      var _tabImages = [
        [
          const LoadAssetsImage('home/menu_home',
              width: 25.0, color: Colours.unselected_item_color),
          const LoadAssetsImage('home/menu_home',
              width: 25.0, color: Colours.app_main)
        ],
        [
          const LoadAssetsImage('home/menu_order',
              width: 25.0, color: Colours.unselected_item_color),
          const LoadAssetsImage('home/menu_order',
              width: 25.0, color: Colours.app_main)
        ],
        [
          const LoadAssetsImage('home/menu_mine',
              width: 25.0, color: Colours.unselected_item_color),
          const LoadAssetsImage('home/menu_mine',
              width: 25.0, color: Colours.app_main)
        ],
      ];
      _list = List.generate(3, (i) {
        return BottomNavigationBarItem(
          icon: _tabImages[i][0],
          activeIcon: _tabImages[i][1],
          label: _appBarTitles[i],
        );
      });
    }
    return _list;
  }

  @override
  void initState() {
    super.initState();
    initData();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      bottomNavigationBar: Obx(() => BottomNavigationBar(
            items: _buildBottomNavigationBarItem(),
            currentIndex: mainState.index.value,
            type: BottomNavigationBarType.fixed,
            selectedItemColor: Colours.app_main,
            unselectedItemColor: Colours.dark_unselected_item_color,
            onTap: (index) =>
                {logic.changeIndex(index), _pageController.jumpToPage(index)},
          )),
      body: PageView(
        controller: _pageController,
        children: _pageList,
        onPageChanged: onPageChanged,
        physics: NeverScrollableScrollPhysics(), // 禁止滑动
      ),
    );
  }

  void initData() {
    _pageList = [HomePage(), OrderPage(), MinePage()];
  }

  void onPageChanged(int index) {
    print(index);
  }
}

总结

关于首页onPageChanged方法,主要是考虑页面切换时,可以顺便做一些逻辑处理,在整个首页tab切换过程中,是真的体会到了GetX的轻量和方便,由于我也是刚刚学习,如果有什么问题,欢迎留言讨论。

相关文章

  • Flutter(进阶)GetX+BottomNavigation

    GetX是什么? 关于GetX是什么,git上面有官方文档,GetX[https://github.com/jon...

  • 为抗击新肺炎贡献一份技术力量-App研发

    推荐学习项目 Flutter高级进阶(Flutter技术进阶开源电子书) Flutter教程网(不定时更新Flut...

  • flutter开篇

    下一篇 Flutter进阶 Flutter英文网Flutter中文网Widgets 目录Flutter SDKFl...

  • Flutter tips

    flutter禁用滚动事件Flutter进阶:深入探究 ListView 和 ScrollPhysicsFlutt...

  • Flutter 仿探探编辑页图片展示控件

    Flutter 利用OverlayEntry实现Toast(进阶) Flutter Dio二次封装 功能点 布局:...

  • Flutter教学目录

    Flutter教学:从零开始->进阶之旅->深入探讨 这是个Flutter教学系列的文章,会从Flutter基础入...

  • 【Flutter】一些技术文章

    收集整理了觉得还不错的一些相关文章:flutter中的生命周期Flutter进阶—通用布局控件Flutter部分插...

  • flutter进阶

    上一篇 Flutter开篇 widget组合与自绘 组合--返回widget组合.png 组合--继承widget...

  • Flutter:进阶

    原创:有趣知识点摸索型文章创作不易,请珍惜,之后会持续更新,不断完善个人比较喜欢做笔记和写总结,毕竟好记性不如烂笔...

  • Flutter进阶

    1.extends 抽象类和 implements抽象类区别抽象类 是一种规范标准,是不能被实例化。比如第三方sd...

网友评论

      本文标题:Flutter(进阶)GetX+BottomNavigation

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