feat: 请求数据和配置

This commit is contained in:
chengsiwen committed 2026-07-06 15:21:29 +08:00
1 parent 557f900187
commit 9b0fe51fa4
21 files changed
+1026 -60

No files matched your search

+48 -1
View File
@@ -1,7 +1,13 @@
import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/material.dart';
import 'package:novyronst/common/api/video_request.dart';
import 'package:novyronst/common/help/app_nav.dart';
import 'package:novyronst/common/model/ny_category_model.dart';
import 'package:novyronst/common/model/ny_drama_model.dart';
import 'package:novyronst/common/model/ny_home_model.dart';
import 'package:novyronst/pages/first/pages/search_page.dart';
import 'package:novyronst/pages/first/widgets/home_first_view.dart';
import 'package:novyronst/pages/first/widgets/home_rank_widget.dart';
import 'package:novyronst/pages/first/widgets/home_remaining_sections.dart';
import 'package:novyronst/pages/first/widgets/search_view.dart';
import 'package:novyronst/root/lib_export.dart';
@@ -18,6 +24,41 @@ class FirstPage extends StatefulWidget {
}
class _RootPageState extends State<FirstPage> {
List<NyCategoryModel> _categories = [];
List<NyHomeModel> _homeDatas = [];
final EasyRefreshController _refreshController = EasyRefreshController(
controlFinishRefresh: true,
);
@override
void initState() {
super.initState();
_getCategoryData();
_getAllData();
}
void _getAllData() {
VideoRequest.getHomeData().then((value) {
setState(() {
_homeDatas = value;
});
for (NyHomeModel element in value) {
print('ele len===: ${element.moduleKey} : ${element.dataList.length}');
}
});
}
void _getCategoryData() {
VideoRequest.getCategoriesList().then((value) {
setState(() {
_categories = value;
});
});
}
@override
Widget build(BuildContext context) {
return AppBgPage(
@@ -34,11 +75,17 @@ class _RootPageState extends State<FirstPage> {
slivers: [
SliverToBoxAdapter(child: HomeFirstView()),
SliverPadding(
padding: const EdgeInsets.only(left: 16, right: 10, top: 16),
padding: const EdgeInsets.only(left: 16, right: 10, top: 16, bottom: 8),
sliver: SliverToBoxAdapter(
child: HelpImage.asset(ConstImage.homeRank),
)
),
SliverPadding(
padding: const EdgeInsetsGeometry.symmetric(horizontal: 16),
sliver: SliverToBoxAdapter(
child: HomeRankWidget(),
),
),
const SliverToBoxAdapter(child: HomeRemainingSections()),
],
),
+1 -1
View File
@@ -84,7 +84,7 @@ class _HomeFirstViewState extends State<HomeFirstView> {
);
}
_buildVideoItem() {
Widget _buildVideoItem() {
return Padding(
padding: const EdgeInsets.all(8),
child: Column(
@@ -0,0 +1,84 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:novyronst/common/const/const_string.dart';
import 'package:novyronst/tools/widgets/novy_com_widget.dart';
import '../../../tools/util/app_screen.dart';
import '../../../tools/widgets/novy_button_bg.dart';
import '../../widgets/cut_corner_clipper.dart';
import '../../widgets/ny_tag_widget.dart';
class HomeRankWidget extends StatelessWidget {
const HomeRankWidget({super.key});
@override
Widget build(BuildContext context) {
return CutCornerClipper(
width: AppScreen.screenWidth - 32,
cutCorner: CutCorner.bottomLeft,
cutSize: 40,
child: Padding(
padding: const EdgeInsets.all(8),
child: Column(
children: [
_buildRankList(),
const SizedBox(height: 5),
Row(
children: [
SizedBox(width: 20.w),
NovyButtonBg(text: 'Keep Watching', width: 308.w,)
],
)
],
),
),
);
}
Row _buildRankList() {
return Row(
children: [
_firstVideoView(),
const SizedBox(width: 8),
_otherVideoView(),
],
);
}
Widget _firstVideoView() {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: 160.w, height: 240.w,
decoration: BoxDecoration(
color: Colors.red,
)
),
const SizedBox(height: 10),
NovyText('Star of the ocean', fontSize: 15,
color: Colors.black,
fontFamily: ConstFont.montMedium,
),
const SizedBox(height: 5),
NyTagWidget(text: 'Safiray'),
const SizedBox(height: 8),
],
);
}
Widget _otherVideoView() {
return Column(
children: List.generate(3, (index) {
return Container(
margin: const EdgeInsets.only(bottom: 8),
width: 160.w, height: 93.w,
decoration: BoxDecoration(
color: Colors.grey,
)
);
})
);
}
}
+52
View File
@@ -0,0 +1,52 @@
import 'package:flutter/material.dart';
import 'package:novyronst/common/api/user_request.dart';
import 'package:novyronst/common/help/app_nav.dart';
import 'package:novyronst/common/help/help_image.dart';
import 'package:novyronst/common/help/help_token.dart';
import 'package:novyronst/root/root_page.dart';
class LauncherPage extends StatefulWidget {
const LauncherPage({super.key});
@override
State<StatefulWidget> createState() {
return _LauncherPageState();
}
}
class _LauncherPageState extends State<LauncherPage> {
@override
void initState() {
super.initState();
_userRegister();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: HelpImage.asset(ConstImage.launcher, fit: BoxFit.cover),
);
}
void _userRegister() async {
// 先拿token没有的话去注册
final tm = HelpToken();
String token = tm.get();
if (token.isNotEmpty) {
// 成功后去到主页面
Future.delayed(const Duration(seconds: 1), () {
AppNav.off(RootPage());
});
return;
}
final res = await UserRequest.register();
if (res != null) {
tm.save(res.token);
AppNav.off(RootPage());
}
}
}