flutter文件分类模板之modules
app页面主要的widget构建和路由注册
app/modlues/home/ views
/// home/views 页面ui层
import 'package:get/get.dart';
import 'package:flutter/material.dart';class BannerPage extends StatelessWidget {const BannerPage({super.key});@overrideWidget build(BuildContext context) {return GetBuilder<HomeController >(init: Get.find<HomeController >(),builder: (controller) => Scaffold(body: Container(alignment: Alignment.center,child: Flex(direction: Axis.horizontal, children: [for (var i = 0; i < controller.buttons.length; i++)ElevatedButton(onPressed: () => controller.onItemTapped(i),child: Text(controller.buttons[i]['name']),),// controller.buildWidget()])// Obx(() => Text(controller.title.value))),),);}
}
app/modlues/home/controllers
import 'package:get/get.dart';class HomeController extends GetxController {String str = ''.obs // 响应的字符串RxInt count = 0.bos // 响应的数字List data_list = [].obs // 响应数组(元组) 不确定好像是这么写的最好自己确认一下Map obj = {}.obs // 响应对象 data_list.add({ "name": 'w'}) // 数组添加数据data_list.where( item => item['name'] == 'w') // 类似es6中arr.filter()/// 页面层所需要的RxString title = 'hello'.tr.obs;List buttons = [{"name": "whrite".tr, "path": '/whrite'},{"name": "recordList".tr, 'path': '/record_list'},{"name": 'api'.tr, 'path': '/api', 'isRouter': true}];// 点击按钮触发事件void onItemTapped(int i) async {// Get.toNamed(buttons[i]['path']);if (buttons[i]['isRouter'] == true) {// HomeNet.getHomePageContent();await getHomePageContent();} else {Get.toNamed(buttons[i]['path']);}}// 接口触发 !!这里有问题getHomePageContent() async {print('第一层');Response response = await HomeNet().getHomePageContent();print(response);update();}@overridevoid onInit() {print('初始化');}}
app/modlues/home/binding
// 链接ui层和控制层
import 'package:get/get.dart';
import 'package:my_notice/app/modules/banner/controllers/banner_controller.dart';class BannerBinding extends Bindings {@overridevoid dependencies() {Get.lazyPut(() => BannerController());}
}