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});
@override
Widget build(BuildContext context) {
return GetBuilder(
init: Get.find(),
builder: (controller) => Scaffold(
body: Container(
alignment: Alignment.center,
child: Flex(direction: Axis.horizontal, children: [
for (var i = 0; i 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();
}
@override
void 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 {
@override
void dependencies() {
Get.lazyPut(() => BannerController());
}
}