创建完整的 Flutter 项目结构,包含 Android 和 iOS 平台配置、核心网络层、路由、状态管理及业务模块(订单、收益、认证),适配原 uni-app 项目功能逻辑
45 lines
1.3 KiB
Dart
45 lines
1.3 KiB
Dart
import 'package:flutter/material.dart';
|
||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||
|
||
import '../core/theme/app_colors.dart';
|
||
import '../features/earnings/presentation/earnings_tab.dart';
|
||
import '../features/order/presentation/order_tab.dart';
|
||
import '../features/profile/presentation/profile_tab.dart';
|
||
import '../shared/widgets/x_bottom_nav.dart';
|
||
import 'tab_index.dart';
|
||
|
||
/// 3 个 Tab 的常驻容器。源项目每个页面各自挂 `CustomTabBar`,
|
||
/// 这里统一收口到容器层,用 [IndexedStack] 保留各页内部状态。
|
||
class TabsPage extends ConsumerWidget {
|
||
const TabsPage({super.key});
|
||
|
||
@override
|
||
Widget build(BuildContext context, WidgetRef ref) {
|
||
final current = ref.watch(tabIndexProvider);
|
||
|
||
return Scaffold(
|
||
backgroundColor: AppColors.bgPage,
|
||
body: Stack(
|
||
children: [
|
||
Positioned.fill(
|
||
child: IndexedStack(
|
||
index: current.index,
|
||
children: const [OrderTab(), EarningsTab(), ProfileTab()],
|
||
),
|
||
),
|
||
Positioned(
|
||
left: 0,
|
||
right: 0,
|
||
bottom: 0,
|
||
child: XBottomNav(
|
||
current: current.key,
|
||
onChanged: (key) =>
|
||
ref.read(tabIndexProvider.notifier).selectByKey(key),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
);
|
||
}
|
||
}
|