Files
CompanyProject/moehu/moehu_fontend/lib/views/Dynamic/Dynamic.dart
2024-09-27 01:32:49 +08:00

194 lines
5.3 KiB
Dart

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:flutter_modular/flutter_modular.dart';
import 'package:peach/config/_.dart';
import 'package:peach/entity/_.dart';
import 'package:peach/event/_.dart';
import 'package:peach/service/TagService.dart';
import 'package:peach/service/_.dart';
import 'package:peach/utils/_.dart';
import 'package:peach/views/Dynamic/DynamicItem.dart';
import 'package:peach/views/Dynamic/Topic.dart';
import 'package:peach/widget/_.dart';
import 'MostFrequently.dart';
/*
* 动态
*/
class Dynamic extends StatefulWidget {
@override
_Dynamic createState() => _Dynamic();
}
class _Dynamic extends State<Dynamic> {
EasyRefreshController _easyRefreshController;
List<DynamicTabsDynamicEntity> dynamicList = [];
List<DynamicDynamicHistoryEntity> history = [];
List<TagRecommendTagEntityData> recommendTagList = [];
PageEntity page = PageEntity();
@override
void initState() {
_easyRefreshController = EasyRefreshController();
super.initState();
future();
listenChange();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
toolbarHeight: Screen.setHeight(82),
backgroundColor: ColorConfig.WhiteBackColor,
elevation: 0,
leading: SizedBox(width: 0.1),
title: Align(
alignment: Alignment.center,
child: Text("动态",
textAlign: TextAlign.center,
style: TextStyle(color: ColorConfig.TitleColor)),
),
actions: [
GestureDetector(
onTap: () {
Navigator.of(context).pushNamed("/releaseNews");
},
child: Container(
margin: EdgeInsets.only(right: 10),
width: Screen.setWidth(45),
child: Icon(Icons.edit_road, color: ColorConfig.TitleColor),
),
)
],
bottom: bottom(),
),
body: Container(
height: Screen.height(context) - Screen.setHeight(158),
child: easyRefresh(Column(
children: [
MostFrequently(
history: history,
),
Column(
children: [
Line(),
Topic(
topicList: recommendTagList,
)
],
),
...dynamicList
.asMap()
.keys
.map((e) => DynamicItem(dynamicData: dynamicList[e]))
.toList(),
],
)),
),
);
}
Widget bottom() {
return PreferredSize(
preferredSize: Size.fromHeight(45),
child: Container(
height: Screen.setHeight(37),
decoration: BoxDecoration(
border: Border(
top: BorderSide(
color: ColorConfig.LineColor, width: 1, style: BorderStyle.solid),
bottom: BorderSide(
color: ColorConfig.LineColor, width: 1, style: BorderStyle.solid),
)),
child: Align(
alignment: Alignment.center,
child: Panel(
top: 5,
bottom: 5,
child: ExhibitionSearch(
backgroundColor: ColorConfig.AshPlacement,
),
),
),
),
);
}
// 下拉刷新上啦加载
Widget easyRefresh(Widget child) {
return EasyRefresh(
header: BezierCircleHeader(backgroundColor: ColorConfig.ThemeColor),
footer: BezierBounceFooter(backgroundColor: ColorConfig.ThemeColor),
enableControlFinishRefresh: false,
enableControlFinishLoad: true,
controller: _easyRefreshController,
child: child,
bottomBouncing: true,
onRefresh: () async {
page.page = 1;
dynamicList = [];
page.isLoad = false;
await dynamicPersonalDynamic();
_easyRefreshController.finishRefresh(success: true);
},
onLoad: () async {
if (!page.isLoad) {
page.page += 1;
await dynamicPersonalDynamic();
_easyRefreshController.finishLoad();
} else {
new Future.delayed(Duration(seconds: 1), () {
_easyRefreshController.finishLoad();
});
}
},
);
}
listenChange() {
Config.eventBus.on<ClassEditEvent>().listen((event) {
print("${event.update}-------");
if (event.update) {
print(1);
page.page = 1;
dynamicList = [];
future();
}
});
}
future() async {
await dynamicPersonalDynamic();
await dynamicDynamicHistory();
await tagRecommendTag();
setState(() {});
}
dynamicPersonalDynamic() async {
DynamicTabsDynamicEntityData res = await DynamicService.dynamicTabsDynamic(
{"page": page.page, "count": page.count});
if (res == null) return;
if (res.result.length < page.count) {
page.isLoad = true;
}
dynamicList = [...dynamicList, ...res.result];
}
dynamicDynamicHistory() async {
DynamicDynamicHistoryEntityData res =
await DynamicService.dynamicDynamicHistory({"page": 1, "count": 50});
if (res == null) return;
history = res.result;
}
tagRecommendTag() async {
List<TagRecommendTagEntityData> res = await TagService.tagRecommendTag({});
if (res == null) return;
recommendTagList = res.take(5).toList();
}
}