142 lines
5.6 KiB
Dart
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);
|
|
},
|
|
),
|
|
),
|
|
],
|
|
);
|
|
}
|
|
}
|