Skip to content

Commit

Permalink
DEV UPDATE:Save state after navigator BottomNavigationBar #13
Browse files Browse the repository at this point in the history
  • Loading branch information
misakajimmy committed Mar 12, 2023
1 parent 1cbb6d2 commit b201c5a
Show file tree
Hide file tree
Showing 14 changed files with 178 additions and 31 deletions.
5 changes: 5 additions & 0 deletions Jsons/banner.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"image": "https://i0.hdslb.com/bfs/new_dyn/9b8b8dfbaf92b5dcde93bebabf84e82c2018113152.png@1295w.jpg",
"url": "https://t.bilibili.com/769751787118788617",
"rank": 0
}
6 changes: 6 additions & 0 deletions Jsons/videoPage.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"key": "ugc",
"name": "二创",
"banners": "$[]banner",
"videos": "$[]videoPageVideo"
}
4 changes: 4 additions & 0 deletions Jsons/videoPageVideo.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"rank": 1,
"video": "$video"
}
55 changes: 38 additions & 17 deletions lib/common/Api.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:EOEFANS/models/index.dart';
import 'package:dio/dio.dart';
import 'package:EOEFANS/models/pictures.dart';
import 'package:EOEFANS/models/picturesRequest.dart';
Expand All @@ -9,7 +10,6 @@ import 'package:flutter/cupertino.dart';

import 'Global.dart';


class Api {
Api([this.context]);

Expand Down Expand Up @@ -57,53 +57,74 @@ class Api {
return tmpVideos;
}

// Future<Video>
Future<VideoPage> getVideoPage() async {
var tmpVideoPage = VideoPage();

try {
var paramsData = ({'subscription-key': key});
paramsData.removeWhere((key, value) => value == null);
var r = await dio.get('/video-page', queryParameters: paramsData);

if (r.statusCode == 200) {
var videoPageRes =
IResponse<VideoPage>.fromJson(r.data, (json) => VideoPage.fromJson(json));
if (videoPageRes.data != null) {
tmpVideoPage = videoPageRes.data!;
}
}
} catch (e) {
print(e);
}
return tmpVideoPage;
}

Future<Pictures> picturesRecommend(PicturesRequest params) async {
var tmpPictures = Pictures()
..page=0
..total=0
..result=[];
..page = 0
..total = 0
..result = [];
try {
var paramsData = ({...params.toJson(), 'subscription-key': key});
paramsData.removeWhere((key, value) => value == null);
var r = await dio.get('/pic/recommend',
queryParameters: paramsData);
var r = await dio.get('/pic/recommend', queryParameters: paramsData);

if (r.statusCode == 200) {
var picturesRes =
IResponse<Pictures>.fromJson(r.data, (json) => Pictures.fromJson(json));
var picturesRes = IResponse<Pictures>.fromJson(
r.data, (json) => Pictures.fromJson(json));
if (picturesRes.data != null) {
tmpPictures = picturesRes.data!;
}
}
} catch(e) {
} catch (e) {
print(e);
}
return tmpPictures;
}

Future<Pictures> picturesLatest(PicturesRequest params) async {
var tmpPictures = Pictures()
..page=0
..total=0
..result=[];
..page = 0
..total = 0
..result = [];
try {
var paramsData = ({...params.toJson(), 'subscription-key': key});
paramsData.removeWhere((key, value) => value == null);
var r = await dio.get('/pic/latest',
queryParameters: paramsData);
var r = await dio.get('/pic/latest', queryParameters: paramsData);

if (r.statusCode == 200) {
var picturesRes =
IResponse<Pictures>.fromJson(r.data, (json) => Pictures.fromJson(json));
var picturesRes = IResponse<Pictures>.fromJson(
r.data, (json) => Pictures.fromJson(json));
if (picturesRes.data != null) {
tmpPictures = picturesRes.data!;
}
}
} catch(e) {
} catch (e) {
print(e);
}
return tmpPictures;
}

Future<Version> version() async {
var paramsData = ({'subscription-key': key});
paramsData.removeWhere((key, value) => value == null);
Expand Down
15 changes: 15 additions & 0 deletions lib/models/banner.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import 'package:json_annotation/json_annotation.dart';

part 'banner.g.dart';

@JsonSerializable()
class Banner {
Banner();

late String image;
late String url;
late num rank;

factory Banner.fromJson(Map<String,dynamic> json) => _$BannerFromJson(json);
Map<String, dynamic> toJson() => _$BannerToJson(this);
}
18 changes: 18 additions & 0 deletions lib/models/banner.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions lib/models/index.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
export 'banner.dart' ;
export 'cacheConfig.dart' ;
export 'dynamic.dart' ;
export 'picture.dart' ;
export 'pictures.dart' ;
export 'version.dart' ;
export 'video.dart' ;
export 'videoPage.dart' ;
export 'videoPageVideo.dart' ;
export 'videos.dart' ;
5 changes: 1 addition & 4 deletions lib/models/pictures.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import 'package:json_annotation/json_annotation.dart';
import "dynamic.dart";

part 'pictures.g.dart';

enum PicturePageType {
Expand All @@ -16,8 +15,6 @@ class Pictures {
late num total;
late List<Dynamic> result;

factory Pictures.fromJson(Map<String, dynamic> json) =>
_$PicturesFromJson(json);

factory Pictures.fromJson(Map<String,dynamic> json) => _$PicturesFromJson(json);
Map<String, dynamic> toJson() => _$PicturesToJson(this);
}
17 changes: 17 additions & 0 deletions lib/models/videoPage.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import 'package:json_annotation/json_annotation.dart';
import "banner.dart";
import "videoPageVideo.dart";
part 'videoPage.g.dart';

@JsonSerializable()
class VideoPage {
VideoPage();

late String key;
late String name;
late List<Banner> banners;
late List<VideoPageVideo> videos;

factory VideoPage.fromJson(Map<String,dynamic> json) => _$VideoPageFromJson(json);
Map<String, dynamic> toJson() => _$VideoPageToJson(this);
}
24 changes: 24 additions & 0 deletions lib/models/videoPage.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions lib/models/videoPageVideo.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import 'package:json_annotation/json_annotation.dart';
import "video.dart";
part 'videoPageVideo.g.dart';

@JsonSerializable()
class VideoPageVideo {
VideoPageVideo();

late num rank;
late Video video;

factory VideoPageVideo.fromJson(Map<String,dynamic> json) => _$VideoPageVideoFromJson(json);
Map<String, dynamic> toJson() => _$VideoPageVideoToJson(this);
}
18 changes: 18 additions & 0 deletions lib/models/videoPageVideo.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 13 additions & 9 deletions lib/routes/mainPage.dart
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,12 @@ class _MainPageState extends State<MainPage> {
@override
Widget build(BuildContext context) {
List<Widget> _bodyList = [
_selectedIndex == 0 ? const VideoPage() : Container(),
_selectedIndex == 1 ? const PicturePage() : Container(),
_selectedIndex == 2 ? const MusicPage() : Container(),
// _selectedIndex == 0 ? const VideoPage() : Container(),
// _selectedIndex == 1 ? const PicturePage() : Container(),
// _selectedIndex == 2 ? const MusicPage() : Container(),
const VideoPage(),
const PicturePage(),
const MusicPage()
];

return Scaffold(
Expand All @@ -69,13 +72,14 @@ class _MainPageState extends State<MainPage> {
data: Theme.of(context).copyWith(canvasColor: Colors.transparent),
child: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage(
'assets/${Provider.of<ThemeModel>(context).assets}/tail_bg.png',
),
fit: BoxFit.fill,
image: DecorationImage(
image: AssetImage(
'assets/${Provider.of<ThemeModel>(context).assets}/tail_bg.png',
),
color: Colors.transparent),
fit: BoxFit.fill,
),
color: Colors.transparent,
),
child: BottomNavigationBar(
elevation: 0,
backgroundColor: Colors.transparent,
Expand Down
3 changes: 2 additions & 1 deletion lib/routes/video/videoPage.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:EOEFANS/common/Api.dart';
import 'package:EOEFANS/routes/video/videoNewYear.dart';
import 'package:EOEFANS/routes/video/videoSearchPage.dart';
import 'package:flutter/material.dart';
Expand All @@ -15,7 +16,7 @@ class VideoPage extends StatefulWidget {

class _VideoPageState extends State<VideoPage> {
@override
Widget build(BuildContext context) {
Widget build(BuildContext context) {
return DefaultTabController(
length: 3,
initialIndex: 0,
Expand Down

0 comments on commit b201c5a

Please sign in to comment.