Flutter+GetX框架的基础模版搭建流程

Flutter+GetX框架的基础模版搭建流程

安装getx脚手架参考:

1、创建一个flutter项目

教程很多,自己找,我这边是通过Android Studio创建。

2、脚手架命令初始化

get init

get create page:tabs
get create page:health
get create page:user

3、去除debug标志

void main() {
  runApp(
    GetMaterialApp(
      debugShowCheckedModeBanner: false,
      title: "Application",
      initialRoute: AppPages.INITIAL,
      getPages: AppPages.routes,
    ),
  );
}

4、tabs页面初始化

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(
        controller: controller.pageController,
        children: controller.pages,
        onPageChanged: (index) {
          controller.setCurrentIndex(index);
        },
      ),
      bottomNavigationBar: BottomNavigationBar(
        fixedColor: Colors.red, //选中的颜色
        currentIndex: controller.currentIndex.value, //第几个菜单选中
        type: BottomNavigationBarType.fixed, //如果底部有4个或者4个以上的
        onTap: (index) {
          controller.setCurrentIndex(index);
          controller.pageController.jumpToPage(index);
        },
        items: const [
          BottomNavigationBarItem(icon: Icon(Icons.home), label: "首页"),
          BottomNavigationBarItem(icon: Icon(Icons.category), label: "健康"),
          BottomNavigationBarItem(icon: Icon(Icons.people), label: "我的"),
        ],
      ),
    ));
  }
}

tabs_controller.dart

import 'package:aisikangdemo/app/modules/health/views/health_view.dart';
import 'package:aisikangdemo/app/modules/home/views/home_view.dart';
import 'package:aisikangdemo/app/modules/user/views/user_view.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

class TabsController extends GetxController {
  RxInt currentIndex = 0.obs;
  PageController pageController = Get.arguments != null
      ? PageController(initialPage: Get.arguments["initialPage"])
      : PageController(initialPage: 0);

final List<Widget> pages = [
    const HomeView(),
    const HealthView(),
    const UserView(),
  ];

  
  void onInit() {
    super.onInit();
        if (Get.arguments != null) {
      currentIndex.value=Get.arguments["initialPage"];
      update();
    }
  }


  
  void onClose() {
    super.onClose();
  }

 void setCurrentIndex(index) {
    currentIndex.value = index;
    update();
  }
}

tabs_binding.dart

import 'package:aisikangdemo/app/modules/health/controllers/health_controller.dart';
import 'package:aisikangdemo/app/modules/home/controllers/home_controller.dart';
import 'package:aisikangdemo/app/modules/user/controllers/user_controller.dart';
import 'package:get/get.dart';

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

class TabsBinding extends Bindings {
  
  void dependencies() {
    Get.lazyPut<TabsController>(
      () => TabsController(),
    );
    Get.lazyPut<HomeController>(
      () => HomeController(),
    );
    Get.lazyPut<HealthController>(
      () => HealthController(),
    );
    Get.lazyPut<UserController>(
      () => UserController(),
    );
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值