aslan-flutter/lib/chatvibe_features/dynamic/index_dynamic_page.dart
2026-07-01 18:25:58 +08:00

142 lines
5.6 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:aslan/app_localizations.dart';
import 'package:aslan/chatvibe_ui/components/at_debounce_widget.dart';
import 'package:aslan/chatvibe_features/dynamic/dynamic_route.dart';
import 'package:aslan/chatvibe_features/dynamic/following/dynamic_following_page.dart';
import 'package:aslan/chatvibe_features/dynamic/trend/dynamic_trend_page.dart';
import 'package:provider/provider.dart';
import 'package:aslan/chatvibe_ui/components/at_compontent.dart';
import 'package:aslan/chatvibe_core/constants/at_global_config.dart';
import 'package:aslan/chatvibe_core/routes/at_fluro_navigator.dart';
import 'package:aslan/chatvibe_data/sources/local/user_manager.dart';
import 'package:aslan/chatvibe_managers/app_general_manager.dart';
import 'package:aslan/chatvibe_managers/user_profile_manager.dart';
///动态
class IndexDynamicPage extends StatefulWidget {
@override
_IndexDynamicPageState createState() => _IndexDynamicPageState();
}
class _IndexDynamicPageState extends State<IndexDynamicPage> {
@override
void initState() {
super.initState();
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
return Stack(
children: [
Image.asset(
ATGlobalConfig.businessLogicStrategy.getDynamicPageBackgroundImage(),
width: ScreenUtil().screenWidth,
fit: BoxFit.cover,
),
DefaultTabController(
length: 2,
initialIndex: 1,
child: Scaffold(
backgroundColor: ATGlobalConfig.businessLogicStrategy.getDynamicPageScaffoldBackgroundColor(),
appBar: AppBar(
backgroundColor: ATGlobalConfig.businessLogicStrategy.getDynamicPageAppBarBackgroundColor(),
leading: Transform.translate(
offset: Offset(ATGlobalConfig.lang == "ar" ? -9.w : 9.w, 0),
child: Transform.scale(
scale: 0.782,
child: GestureDetector(
child: Consumer<ChatVibeUserProfileManager>(
builder: (context, ref, child) {
return netImage(
url:
AccountStorage()
.getCurrentUser()
?.userProfile
?.userAvatar ??
"",
defaultImg: 'atu_images/general/at_icon_avar_defalt.png',
width: 32.w,
height: 32.w,
shape: BoxShape.circle,
);
},
),
onTap: () {
Provider.of<AppGeneralManager>(
context,
listen: false,
).openDrawer(context);
},
),
),
),
title: TabBar(
tabs:
[
ATAppLocalizations.of(context)!.following,
ATAppLocalizations.of(context)!.trend,
]
.map(
(e) => Padding(
padding: EdgeInsets.only(bottom: 3.w, top: 4.w),
child: Text(e),
),
)
.toList(),
labelColor: ATGlobalConfig.businessLogicStrategy.getDynamicPageTabLabelColor(),
tabAlignment: TabAlignment.center,
isScrollable: ATGlobalConfig.businessLogicStrategy.shouldDynamicPageTabScrollable(),
splashFactory: NoSplash.splashFactory,
overlayColor: MaterialStateProperty.all(Colors.transparent),
indicator: BoxDecoration(),
unselectedLabelColor: ATGlobalConfig.businessLogicStrategy.getDynamicPageTabUnselectedLabelColor(),
labelStyle: ATGlobalConfig.businessLogicStrategy
.getDynamicPageTabLabelStyle()
.copyWith(
fontSize: ATGlobalConfig.businessLogicStrategy
.getDynamicPageTabLabelStyle()
.fontSize
?.sp,
),
unselectedLabelStyle: ATGlobalConfig.businessLogicStrategy
.getDynamicPageTabUnselectedLabelStyle()
.copyWith(
fontSize: ATGlobalConfig.businessLogicStrategy
.getDynamicPageTabUnselectedLabelStyle()
.fontSize
?.sp,
),
indicatorColor: ATGlobalConfig.businessLogicStrategy.getDynamicPageTabIndicatorColor(),
dividerColor: ATGlobalConfig.businessLogicStrategy.getDynamicPageTabDividerColor(),
),
actions: [Container(width: 40.w)],
),
body: TabBarView(
children: [DynamicFollowingPage(), DynamicTrendPage()],
),
),
),
PositionedDirectional(
bottom: 80.w,
end: 0.w,
child: ATDebounceWidget(
child: Image.asset(
ATGlobalConfig.businessLogicStrategy.getDynamicPageAddButtonIcon(),
height: 75.w,
),
onTap: () {
ATNavigatorUtils.push(context, DynamicRoute.create, replace: false);
},
),
),
],
);
}
}