getSystemFonts() {
10 | return FontListParser().getSystemFonts();
11 | }
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return AlertDialog(
16 | content: SingleChildScrollView(
17 | child: Column(
18 | crossAxisAlignment: CrossAxisAlignment.start,
19 | mainAxisSize: MainAxisSize.min,
20 | children: [
21 | for (SystemFont font in getSystemFonts())
22 | InkWell(
23 | child: HtmlText(
24 | html: ''
25 | '${basename(font.path!)}
'),
26 | onTap: () {
27 | Navigator.pop(context, font.name);
28 | },
29 | )
30 | ],
31 | ),
32 | ),
33 | );
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/component/rich_editor/lib/src/widgets/html_text.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart';
3 |
4 | class HtmlText extends StatelessWidget {
5 | final String html;
6 |
7 | HtmlText({required this.html});
8 |
9 | @override
10 | Widget build(BuildContext context) {
11 | return Container(
12 | child: HtmlWidget(html),
13 | height: 40.0,
14 | );
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/component/rich_editor/lib/src/widgets/insert_link_dialog.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import 'custom_dialog_template.dart';
4 |
5 | class InsertLinkDialog extends StatelessWidget {
6 | TextEditingController link = TextEditingController();
7 | TextEditingController label = TextEditingController();
8 |
9 | @override
10 | Widget build(BuildContext context) {
11 | return CustomDialogTemplate(
12 | body: [
13 | Text('Link'),
14 | TextField(
15 | controller: link,
16 | decoration: InputDecoration(
17 | hintText: 'type link here',
18 | ),
19 | ),
20 | SizedBox(height: 20.0),
21 | Text('Label'),
22 | TextField(
23 | controller: label,
24 | decoration: InputDecoration(
25 | hintText: 'type label text here',
26 | ),
27 | ),
28 | ],
29 | onDone: () => Navigator.pop(context, [link.text, label.text]),
30 | onCancel: () => Navigator.pop(context),
31 | );
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/component/rich_editor/res/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/res/1.png
--------------------------------------------------------------------------------
/component/rich_editor/test/rich_editor_test.dart:
--------------------------------------------------------------------------------
1 | void main() {}
2 |
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | *.mode1v3
2 | *.mode2v3
3 | *.moved-aside
4 | *.pbxuser
5 | *.perspectivev3
6 | **/*sync/
7 | .sconsign.dblite
8 | .tags*
9 | **/.vagrant/
10 | **/DerivedData/
11 | Icon?
12 | **/Pods/
13 | **/.symlinks/
14 | profile
15 | xcuserdata
16 | **/.generated/
17 | Flutter/App.framework
18 | Flutter/Flutter.framework
19 | Flutter/Flutter.podspec
20 | Flutter/Generated.xcconfig
21 | Flutter/ephemeral/
22 | Flutter/app.flx
23 | Flutter/app.zip
24 | Flutter/flutter_assets/
25 | Flutter/flutter_export_environment.sh
26 | ServiceDefinitions.json
27 | Runner/GeneratedPluginRegistrant.*
28 |
29 | # Exceptions to above rules.
30 | !default.mode1v3
31 | !default.mode2v3
32 | !default.pbxuser
33 | !default.perspectivev3
34 |
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 8.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 |
4 | @UIApplicationMain
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | GeneratedPluginRegistrant.register(with: self)
11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/lib/app/core/pink_state.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 |
3 | ///页面状态异常管理
4 | abstract class PinkState extends State {
5 | @override
6 | void setState(VoidCallback fn) {
7 | // TODO: implement setState
8 | if (mounted) {
9 | super.setState(fn);
10 | } else {}
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/data/category_mo.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/data/home_mo.dart';
2 |
3 | class CategoryModel {
4 | late int code;
5 | late String msg;
6 | late List data;
7 |
8 | CategoryModel({required this.code, required this.msg, required this.data});
9 |
10 | CategoryModel.fromJson(Map json) {
11 | code = json['code'];
12 | msg = json['msg'];
13 | if (json['data'] != null) {
14 | data = [];
15 | json['data'].forEach((v) {
16 | data.add(new CategoryMo.fromJson(v));
17 | });
18 | } else {
19 | data = [];
20 | }
21 | }
22 |
23 | Map toJson() {
24 | final Map data = new Map();
25 | data['code'] = this.code;
26 | data['msg'] = this.msg;
27 | if (this.data != null) {
28 | data['data'] = this.data.map((v) => v.toJson()).toList();
29 | }
30 | return data;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/lib/app/data/dynamic_mo.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/data/post_mo.dart';
2 |
3 | class DynamicMo {
4 | late List list;
5 | late int total;
6 |
7 | DynamicMo({required this.list, required this.total});
8 |
9 | DynamicMo.fromJson(Map json) {
10 | if (json['list'] != null) {
11 | list = [];
12 | json['list'].forEach((v) {
13 | list.add(new PostMo.fromJson(v));
14 | });
15 | } else {
16 | list = [];
17 | }
18 | total = json['total'];
19 | }
20 |
21 | Map toJson() {
22 | final Map data = new Map();
23 | if (this.list != null) {
24 | data['list'] = this.list.map((v) => v.toJson()).toList();
25 | }
26 | data['total'] = this.total;
27 | return data;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/lib/app/data/profile_mo.dart:
--------------------------------------------------------------------------------
1 | class ProfileMo {
2 | late int userId;
3 | late String avatar;
4 | late String background;
5 | late String username;
6 | late int fans;
7 | late int follows;
8 | late int coin;
9 | late int active;
10 |
11 | ProfileMo(
12 | {required this.userId,
13 | required this.avatar,
14 | required this.background,
15 | required this.username,
16 | required this.fans,
17 | required this.follows,
18 | required this.coin,
19 | required this.active});
20 |
21 | ProfileMo.fromJson(Map json) {
22 | userId = json['user_id'];
23 | avatar = json['avatar'];
24 | background = json['background'];
25 | username = json['username'];
26 | fans = json['fans'];
27 | follows = json['follows'];
28 | coin = json['coin'];
29 | active = json['active'];
30 | }
31 |
32 | Map toJson() {
33 | final Map data = {};
34 | data['user_id'] = userId;
35 | data['avatar'] = avatar;
36 | data['background'] = background;
37 | data['username'] = username;
38 | data['fans'] = fans;
39 | data['follows'] = follows;
40 | data['coin'] = coin;
41 | data['active'] = active;
42 | return data;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/lib/app/data/ranking_mo.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/data/post_mo.dart';
2 |
3 | class RankingMo {
4 | late List list;
5 | late int total;
6 |
7 | RankingMo({required this.list, required this.total});
8 |
9 | RankingMo.fromJson(Map json) {
10 | if (json['list'] != null) {
11 | list = [];
12 | json['list'].forEach((v) {
13 | list.add(new PostMo.fromJson(v));
14 | });
15 | } else {
16 | list = [];
17 | }
18 | total = json['total'];
19 | }
20 |
21 | Map toJson() {
22 | final Map data = new Map();
23 | if (this.list != null) {
24 | data['list'] = this.list.map((v) => v.toJson()).toList();
25 | }
26 | data['total'] = this.total;
27 | return data;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/lib/app/data/upload_mo.dart:
--------------------------------------------------------------------------------
1 | class UplaodMo {
2 | late int code;
3 | late String msg;
4 | late String data;
5 |
6 | UplaodMo({required this.code, required this.msg, required this.data});
7 |
8 | UplaodMo.fromJson(Map json) {
9 | code = json['code'];
10 | msg = json['msg'];
11 | data = json['data'];
12 | }
13 |
14 | Map toJson() {
15 | final Map data = new Map();
16 | data['code'] = this.code;
17 | data['msg'] = this.msg;
18 | data['data'] = this.data;
19 | return data;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/http/dao/await_watch_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/data/dynamic_mo.dart';
2 | import 'package:pink_acg/app/http/request/await_watch_request.dart';
3 | import 'package:pink_net/pink_net.dart';
4 |
5 | class AwaitWatchDao {
6 | static get(String awaitWatchIds, {int page = 1, int size = 10}) async {
7 | AwaitWatchRequest request = AwaitWatchRequest();
8 | request.add("postIds", awaitWatchIds).add("page", page).add("size", size);
9 | var result = await PinkNet.getInstance().fire(request);
10 | return DynamicMo.fromJson(result["data"]);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/http/dao/category_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/data/category_mo.dart';
2 | import 'package:pink_acg/app/http/request/category_request.dart';
3 | import 'package:pink_net/pink_net.dart';
4 |
5 | class CategoryDao {
6 | static get(int size) async {
7 | CategoryRequest request = CategoryRequest();
8 | request.add("size", size);
9 | var result = await PinkNet.getInstance().fire(request);
10 | return CategoryModel.fromJson(result);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/http/dao/chat_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/data/chat_mo.dart';
2 | import 'package:pink_acg/app/http/request/chat_request.dart';
3 | import 'package:pink_net/pink_net.dart';
4 |
5 | class ChatDao {
6 | static get(int sid, {int page = 1, int size = 10}) async {
7 | ChatRequest request = ChatRequest();
8 | request.add("sid", sid).add("page", page).add("size", size);
9 | var result = await PinkNet.getInstance().fire(request);
10 | return ChatList.fromJson(result["data"]);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/http/dao/coin_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/http/request/coin_request.dart';
2 | import 'package:pink_net/pink_net.dart';
3 |
4 | class CoinDao {
5 | static get(int postId) async {
6 | CoinRequest request = CoinRequest();
7 | request.add("coin", "1").add("post_id", postId);
8 | var result = await PinkNet.getInstance().fire(request);
9 | return result;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/lib/app/http/dao/comment_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/data/comment_mo.dart';
2 | import 'package:pink_acg/app/http/request/comment_request.dart';
3 | import 'package:pink_net/pink_net.dart';
4 |
5 | class CommentDao {
6 | static get(int postId, int page, int size) async {
7 | CommentRequest request = CommentRequest();
8 | request.add("page", page);
9 | request.add("size", size);
10 | request.add("post_id", postId);
11 | var result = await PinkNet.getInstance().fire(request);
12 | print(result);
13 | return CommentMo.fromJson(result["data"]);
14 | }
15 |
16 | static post(int postId, String content, String type,
17 | {String parent = "0"}) async {
18 | CommentCreateRequest request = CommentCreateRequest();
19 | request.add("post_id", postId);
20 | request.add("content", content);
21 | request.add("type", type);
22 | request.add("parent", parent);
23 | var result = await PinkNet.getInstance().fire(request);
24 | return result;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/lib/app/http/dao/contact_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/data/contact.dart';
2 | import 'package:pink_acg/app/http/request/contact_request.dart';
3 | import 'package:pink_net/pink_net.dart';
4 |
5 | class ContactDao {
6 | static get() async {
7 | ContactRequest request = ContactRequest();
8 | var result = await PinkNet.getInstance().fire(request);
9 | print(result);
10 | return ContactMo.fromJson(result["data"]);
11 | }
12 |
13 | static getItem(String sendId) async {
14 | ContactItemRequest request = ContactItemRequest();
15 | request.pathParams = sendId;
16 | var result = await PinkNet.getInstance().fire(request);
17 | print(result);
18 | return ContactList.fromJson(result["data"]);
19 | }
20 |
21 | static post(String sid) async {
22 | ContactAddRequest request = ContactAddRequest();
23 | request.add("send_id", sid);
24 | var result = await PinkNet.getInstance().fire(request);
25 | return result;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/lib/app/http/dao/dynamic_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/data/dynamic_mo.dart';
2 | import 'package:pink_acg/app/http/request/dynamic_request.dart';
3 | import 'package:pink_net/pink_net.dart';
4 |
5 | class DynamicDao {
6 | static get(String dynamic, {int page = 1, size = 10}) async {
7 | DynamicRequest request = DynamicRequest();
8 | request.add("dynamic", dynamic).add("page", page).add("size", size);
9 | var result = await PinkNet.getInstance().fire(request);
10 | return DynamicMo.fromJson(result["data"]);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/http/dao/favorite_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/http/request/favorite_request.dart';
2 | import 'package:pink_net/pink_net.dart';
3 |
4 | class FavoriteDao {
5 | static get(int postId) async {
6 | FavoriteRequest request = FavoriteRequest();
7 | request.add("post_id", postId);
8 | var result = await PinkNet.getInstance().fire(request);
9 | return result;
10 | }
11 |
12 | static remove(int postId) async {
13 | UnFavoriteRequest request = UnFavoriteRequest();
14 | request.add("post_id", postId);
15 | var result = await PinkNet.getInstance().fire(request);
16 | return result;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/lib/app/http/dao/follow_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/http/request/follow_request.dart';
2 | import 'package:pink_net/pink_net.dart';
3 |
4 | class FollowDao {
5 | static get(int followId) async {
6 | FollowRequest request = FollowRequest();
7 | request.add("follow_id", followId);
8 | var result = await PinkNet.getInstance().fire(request);
9 | return result;
10 | }
11 |
12 | static remove(int followId) async {
13 | UnFollowRequest request = UnFollowRequest();
14 | request.add("follow_id", followId);
15 | var result = await PinkNet.getInstance().fire(request);
16 | return result;
17 | }
18 |
19 | static status(int followId) async {
20 | FollowStatusRequest request = FollowStatusRequest();
21 | request.pathParams = followId;
22 | var result = await PinkNet.getInstance().fire(request);
23 | return result;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/lib/app/http/dao/follow_list_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/data/follow_list_mo.dart';
2 | import 'package:pink_acg/app/http/request/follow_list_request.dart';
3 | import 'package:pink_net/pink_net.dart';
4 |
5 | class FollowListDao {
6 | static followList(int page) async {
7 | FollowListRequest request = FollowListRequest();
8 | request.add("page", page);
9 | var result = await PinkNet.getInstance().fire(request);
10 | print(result);
11 | return FansListMo.fromJson(result['data']);
12 | }
13 |
14 | static fansList(int page) async {
15 | FansListRequest request = FansListRequest();
16 | request.add("page", page);
17 | var result = await PinkNet.getInstance().fire(request);
18 | return FansListMo.fromJson(result['data']);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/lib/app/http/dao/home_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/data/home_mo.dart';
2 | import 'package:pink_acg/app/http/request/home_request.dart';
3 | import 'package:pink_net/pink_net.dart';
4 |
5 | import '../../data/recommend_mo.dart';
6 | import '../request/reco_posts_request.dart';
7 |
8 | class HomeDao {
9 | static get(int categoryId,
10 | {int size = 10, int page = 1, String sort = "rand"}) async {
11 | HomeRequest request = HomeRequest();
12 | request
13 | .add("category_id", categoryId)
14 | .add("page", page)
15 | .add("size", size)
16 | .add("sort", sort)
17 | .add("cSize", size);
18 | var result = await PinkNet.getInstance().fire(request);
19 | return HomeMo.fromJson(result['data']);
20 | }
21 |
22 | static getRecoPosts(int categoryId,
23 | {int size = 10, int time_stamp = 1649412155013}) async {
24 | RecoPostsRequest request = RecoPostsRequest();
25 | request
26 | .add("category_id", categoryId)
27 | .add("time_stamp", time_stamp)
28 | .add("article_num", size);
29 | var result = await PinkNet.getInstance().fire(request);
30 | print("--------------------------------");
31 | print(categoryId);
32 | print(time_stamp);
33 | print(result);
34 | return RecommendMo.fromJson(result['data']);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/lib/app/http/dao/like_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/http/request/like_request.dart';
2 | import 'package:pink_net/pink_net.dart';
3 |
4 | class LikeDao {
5 | static get(int postId) async {
6 | LikeRequest request = LikeRequest();
7 | request.add("post_id", postId);
8 | var result = await PinkNet.getInstance().fire(request);
9 | return result;
10 | }
11 |
12 | static remove(int postId) async {
13 | UnLikeRequest request = UnLikeRequest();
14 | request.add("post_id", postId);
15 | var result = await PinkNet.getInstance().fire(request);
16 | return result;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/lib/app/http/dao/log_dao.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:pink_acg/app/http/request/log_request.dart';
4 | import 'package:pink_net/pink_net.dart';
5 |
6 | class LogDao {
7 | static post(dynamic param,
8 | {required String readTime, required int categoryId}) async {
9 | LogRequest request = LogRequest();
10 | request
11 | .add("param", jsonEncode(param))
12 | .add("readTime", readTime)
13 | .add("categoryId", categoryId);
14 | var result = await PinkNet.getInstance().fire(request);
15 | print(result);
16 | return result;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/lib/app/http/dao/post_view_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/http/request/post_view_request.dart';
2 | import 'package:pink_net/pink_net.dart';
3 |
4 | class PostViewDao {
5 | static get(int postId) async {
6 | PostViewRequest request = PostViewRequest();
7 | request.pathParams = postId;
8 | var result = await PinkNet.getInstance().fire(request);
9 | return result;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/lib/app/http/dao/profile_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/data/user_center_mo.dart';
2 | import 'package:pink_acg/app/http/request/profile_request.dart';
3 | import 'package:pink_net/pink_net.dart';
4 |
5 | class ProfileDao {
6 | static get() async {
7 | ProfileRequest request = ProfileRequest();
8 | var result = await PinkNet.getInstance().fire(request);
9 | return UserMeta.fromJson(result["data"]);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/lib/app/http/dao/publish_post_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/http/request/publish_post_request.dart';
2 | import 'package:pink_net/pink_net.dart';
3 |
4 | class PublishPostDao {
5 | static get(String title, String content, String cover, int categoryId,
6 | String type, String video) async {
7 | PublishPostRequest request = PublishPostRequest();
8 | request
9 | .add("title", title)
10 | .add("content", content)
11 | .add("cover", cover)
12 | .add("post_type", type)
13 | .add("video", video)
14 | .add("category_id", categoryId);
15 | var result = await PinkNet.getInstance().fire(request);
16 | return result;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/lib/app/http/dao/ranking_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/data/ranking_mo.dart';
2 | import 'package:pink_acg/app/http/request/ranking_request.dart';
3 | import 'package:pink_net/pink_net.dart';
4 |
5 | class RankingDao {
6 | static get(String ranking, {int page = 1, size = 10}) async {
7 | RankingRequest request = RankingRequest();
8 | request.add("ranking", ranking).add("page", page).add("size", size);
9 | var result = await PinkNet.getInstance().fire(request);
10 | return RankingMo.fromJson(result["data"]);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/http/dao/search_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/data/search.dart';
2 | import 'package:pink_acg/app/http/request/search_request.dart';
3 | import 'package:pink_net/pink_net.dart';
4 |
5 | class SearchDao {
6 | static get(String type, String word,
7 | {String postType = "post", int page = 1, int size = 10}) async {
8 | SearchRequest request = SearchRequest();
9 | if (type == "all") {
10 | request
11 | .add("type", "all")
12 | .add("word", word)
13 | .add("page", page)
14 | .add("size", size);
15 | } else if (type == "post" || type == "video") {
16 | request
17 | .add("type", type)
18 | .add("word", word)
19 | .add("page", page)
20 | .add("size", size);
21 | } else if (type == "user") {
22 | request
23 | .add("type", type)
24 | .add("word", word)
25 | .add("page", page)
26 | .add("size", size);
27 | }
28 | var result = await PinkNet.getInstance().fire(request);
29 | return SearchPostMo.fromJson(result["data"]);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/lib/app/http/dao/user_center_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/data/user_center_mo.dart';
2 | import 'package:pink_acg/app/http/request/user_center_request.dart';
3 | import 'package:pink_net/pink_net.dart';
4 |
5 | class UserCenterDao {
6 | static get(String userId) async {
7 | UserCenterRequest request = UserCenterRequest();
8 | request.pathParams = userId;
9 | var result = await PinkNet.getInstance().fire(request);
10 | return UserCenterMo.fromJson(result["data"]);
11 | }
12 |
13 | static getUserMeta(String userId) async {
14 | UserMetaRequest request = UserMetaRequest();
15 | request.pathParams = userId;
16 | var result = await PinkNet.getInstance().fire(request);
17 | return UserMeta.fromJson(result["data"]);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/lib/app/http/dao/user_post_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/data/dynamic_mo.dart';
2 | import 'package:pink_acg/app/http/request/user_post_request.dart';
3 | import 'package:pink_net/pink_net.dart';
4 |
5 | class UserPostDao {
6 | static get(int userId, String type, int page, int size) async {
7 | UserPostRequest request = UserPostRequest();
8 | request.add("user_id", userId);
9 | request.add("post_type", type);
10 | request.add("page", page);
11 | request.add("size", size);
12 | var result = await PinkNet.getInstance().fire(request);
13 | return DynamicMo.fromJson(result["data"]);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/lib/app/http/dao/video_detail_dao.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/data/video_detail_mo.dart';
2 | import 'package:pink_acg/app/http/request/video_detail_request.dart';
3 | import 'package:pink_net/pink_net.dart';
4 |
5 | class VideoDetailDao {
6 | static get(String vid) async {
7 | VideoDetailRequest request = VideoDetailRequest();
8 | request.pathParams = vid;
9 | var result = await PinkNet.getInstance().fire(request);
10 | print(result);
11 | return VideoDetailMo.fromJson(result["data"]);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/lib/app/http/request/await_watch_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class AwaitWatchRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.GET;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/postListByIds";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/http/request/base_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/http/dao/login_dao.dart';
2 | import 'package:pink_acg/pink_constants.dart';
3 | import 'package:pink_net/request/pink_base_request.dart';
4 |
5 | abstract class BaseRequest extends PinkBaseRequest {
6 | @override
7 | String authority() {
8 | return "${PinkConstants.domain}:${PinkConstants.port}";
9 | }
10 |
11 | @override
12 | String url() {
13 | //是否需要登录
14 | if (needLogin()) {
15 | addHeader(
16 | PinkConstants.authorization, "Bearer " + LoginDao.getBoardingPass());
17 | }
18 | return super.url();
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/lib/app/http/request/cancel_favorite_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_net/request/pink_base_request.dart';
2 |
3 | import 'favorite_request.dart';
4 |
5 | class CancelFavoriteRequest extends FavoriteRequest {
6 | @override
7 | HttpMethod httpMethod() {
8 | // TODO: implement httpMethod
9 | return HttpMethod.DELETE;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/lib/app/http/request/category_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class CategoryRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.GET;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/categoryList";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/http/request/chat_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class ChatRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.GET;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/chatList";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/http/request/coin_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class CoinRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.POST;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/coin";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/http/request/comment_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class CommentRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.GET;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/commentList";
20 | }
21 | }
22 |
23 | class CommentCreateRequest extends BaseRequest {
24 | @override
25 | HttpMethod httpMethod() {
26 | return HttpMethod.POST;
27 | }
28 |
29 | @override
30 | bool needLogin() {
31 | return true;
32 | }
33 |
34 | @override
35 | String path() {
36 | return "${PinkConstants.versionPath}/comment";
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/app/http/request/contact_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class ContactRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.GET;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/contactList";
20 | }
21 | }
22 |
23 | class ContactItemRequest extends BaseRequest {
24 | @override
25 | HttpMethod httpMethod() {
26 | return HttpMethod.GET;
27 | }
28 |
29 | @override
30 | bool needLogin() {
31 | return true;
32 | }
33 |
34 | @override
35 | String path() {
36 | return "${PinkConstants.versionPath}/contact";
37 | }
38 | }
39 |
40 | class ContactAddRequest extends BaseRequest {
41 | @override
42 | HttpMethod httpMethod() {
43 | return HttpMethod.POST;
44 | }
45 |
46 | @override
47 | bool needLogin() {
48 | return true;
49 | }
50 |
51 | @override
52 | String path() {
53 | return "${PinkConstants.versionPath}/contact";
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/lib/app/http/request/dynamic_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class DynamicRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.GET;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/dynamic";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/http/request/favorite_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class FavoriteRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.POST;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/star";
20 | }
21 | }
22 |
23 | class UnFavoriteRequest extends BaseRequest {
24 | @override
25 | HttpMethod httpMethod() {
26 | return HttpMethod.POST;
27 | }
28 |
29 | @override
30 | bool needLogin() {
31 | return true;
32 | }
33 |
34 | @override
35 | String path() {
36 | return "${PinkConstants.versionPath}/unStar";
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/app/http/request/follow_list_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class FollowListRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.GET;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/followList";
20 | }
21 | }
22 |
23 | class FansListRequest extends BaseRequest {
24 | @override
25 | HttpMethod httpMethod() {
26 | return HttpMethod.GET;
27 | }
28 |
29 | @override
30 | bool needLogin() {
31 | return true;
32 | }
33 |
34 | @override
35 | String path() {
36 | return "${PinkConstants.versionPath}/fansList";
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/app/http/request/follow_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class FollowRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.POST;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/follow";
20 | }
21 | }
22 |
23 | class UnFollowRequest extends BaseRequest {
24 | @override
25 | HttpMethod httpMethod() {
26 | return HttpMethod.POST;
27 | }
28 |
29 | @override
30 | bool needLogin() {
31 | return true;
32 | }
33 |
34 | @override
35 | String path() {
36 | return "${PinkConstants.versionPath}/unFollow";
37 | }
38 | }
39 |
40 | class FollowStatusRequest extends BaseRequest {
41 | @override
42 | HttpMethod httpMethod() {
43 | return HttpMethod.GET;
44 | }
45 |
46 | @override
47 | bool needLogin() {
48 | return true;
49 | }
50 |
51 | @override
52 | String path() {
53 | return "${PinkConstants.versionPath}/followStatus";
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/lib/app/http/request/forget_pwd_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class ForgetPwdRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.POST;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return false;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/forgetPwd";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/http/request/home_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class HomeRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.GET;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/home";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/http/request/like_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class LikeRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.POST;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/like";
20 | }
21 | }
22 |
23 | class UnLikeRequest extends BaseRequest {
24 | @override
25 | HttpMethod httpMethod() {
26 | return HttpMethod.POST;
27 | }
28 |
29 | @override
30 | bool needLogin() {
31 | return true;
32 | }
33 |
34 | @override
35 | String path() {
36 | return "${PinkConstants.versionPath}/unLike";
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/app/http/request/log_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class LogRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.POST;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/log";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/http/request/login_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class LoginRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.POST;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return false;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/login";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/http/request/post_view_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class PostViewRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.GET;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/postView";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/http/request/profile_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class ProfileRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.GET;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/profile";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/http/request/publish_post_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class PublishPostRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.POST;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/post";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/http/request/ranking_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class RankingRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.GET;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/ranking";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/http/request/reco_posts_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class RecoPostsRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.GET;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/recommend";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/http/request/registration_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class RegistrationRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | // TODO: implement httpMethod
10 | return HttpMethod.POST;
11 | }
12 |
13 | @override
14 | bool needLogin() {
15 | // TODO: implement needLogin
16 | return false;
17 | }
18 |
19 | @override
20 | String path() {
21 | // TODO: implement path
22 | return '${PinkConstants.versionPath}/signup';
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/lib/app/http/request/search_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class SearchRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.GET;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/search";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/http/request/upload_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class UploadRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.POST;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/upload";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/http/request/user_center_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class UserCenterRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.GET;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/userCenter";
20 | }
21 | }
22 |
23 | class UserMetaRequest extends BaseRequest {
24 | @override
25 | HttpMethod httpMethod() {
26 | return HttpMethod.GET;
27 | }
28 |
29 | @override
30 | bool needLogin() {
31 | return true;
32 | }
33 |
34 | @override
35 | String path() {
36 | return "${PinkConstants.versionPath}/user";
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/app/http/request/user_post_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class UserPostRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.GET;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/userPost";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/http/request/user_update_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class UserInfoUpdateRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.POST;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/userInfoUpdate";
20 | }
21 | }
22 |
23 | class UserPasswordUpdateRequest extends BaseRequest {
24 | @override
25 | HttpMethod httpMethod() {
26 | return HttpMethod.POST;
27 | }
28 |
29 | @override
30 | bool needLogin() {
31 | return true;
32 | }
33 |
34 | @override
35 | String path() {
36 | return "${PinkConstants.versionPath}/userPasswordUpdate";
37 | }
38 | }
39 |
40 | class UserEmailUpdateRequest extends BaseRequest {
41 | @override
42 | HttpMethod httpMethod() {
43 | return HttpMethod.POST;
44 | }
45 |
46 | @override
47 | bool needLogin() {
48 | return true;
49 | }
50 |
51 | @override
52 | String path() {
53 | return "${PinkConstants.versionPath}/userEmailUpdate";
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/lib/app/http/request/video_detail_request.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/pink_constants.dart';
2 | import 'package:pink_net/request/pink_base_request.dart';
3 |
4 | import 'base_request.dart';
5 |
6 | class VideoDetailRequest extends BaseRequest {
7 | @override
8 | HttpMethod httpMethod() {
9 | return HttpMethod.GET;
10 | }
11 |
12 | @override
13 | bool needLogin() {
14 | return true;
15 | }
16 |
17 | @override
18 | String path() {
19 | return "${PinkConstants.versionPath}/post/";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/middlewares/auth_middleware.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:flutter/material.dart';
3 | import 'package:get/get.dart';
4 | import 'package:get/get_navigation/src/routes/get_route.dart';
5 | import 'package:get/get_navigation/src/routes/route_middleware.dart';
6 | import 'package:pink_acg/app/http/dao/login_dao.dart';
7 | import 'package:pink_acg/app/routes/app_pages.dart';
8 |
9 | class AuthMiddleware extends GetMiddleware {
10 | @override
11 | int? priority = 2;
12 |
13 | bool get isAuthenticated =>
14 | LoginDao.getBoardingPass() != null && LoginDao.getBoardingPass() != "";
15 |
16 | @override
17 | RouteSettings? redirect(String? route) {
18 | if (!isAuthenticated) {
19 | return RouteSettings(name: Routes.LOGIN);
20 | }
21 | return super.redirect(route);
22 | }
23 |
24 | @override
25 | GetPage? onPageCalled(GetPage? page) {
26 | return super.onPageCalled(page);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/lib/app/modules/aboutApp/bindings/about_app_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/about_app_controller.dart';
4 |
5 | class AboutAppBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => AboutAppController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/aboutApp/controllers/about_app_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 | import 'package:package_info/package_info.dart';
3 |
4 | class AboutAppController extends GetxController {
5 | //TODO: Implement AboutAppController
6 | var version = "".obs;
7 | var appName = "".obs;
8 | var buildNumber = "".obs;
9 | var packageName = "".obs;
10 |
11 | @override
12 | Future onInit() async {
13 | PackageInfo packageInfo = await PackageInfo.fromPlatform();
14 | version.value = packageInfo.version;
15 | appName.value = packageInfo.appName;
16 | buildNumber.value = packageInfo.buildNumber;
17 | packageName.value = packageInfo.packageName;
18 | super.onInit();
19 | }
20 |
21 | @override
22 | void onReady() {
23 | super.onReady();
24 | }
25 |
26 | @override
27 | void onClose() {}
28 | }
29 |
--------------------------------------------------------------------------------
/lib/app/modules/aboutUs/bindings/about_us_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/about_us_controller.dart';
4 |
5 | class AboutUsBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => AboutUsController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/aboutUs/controllers/about_us_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | class AboutUsController extends GetxController {
4 | //TODO: Implement AboutUsController
5 |
6 | @override
7 | void onInit() {
8 | super.onInit();
9 | }
10 |
11 | @override
12 | void onReady() {
13 | super.onReady();
14 | }
15 |
16 | @override
17 | void onClose() {}
18 | }
19 |
--------------------------------------------------------------------------------
/lib/app/modules/chat/bindings/chat_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/chat_controller.dart';
4 |
5 | class ChatBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => ChatController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/contact/bindings/contact_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/contact_controller.dart';
4 |
5 | class ContactBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => ContactController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/darkMode/bindings/dark_mode_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/dark_mode_controller.dart';
4 |
5 | class DarkModeBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => DarkModeController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/darkMode/controllers/dark_mode_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:get/get.dart';
3 | import 'package:get_storage/get_storage.dart';
4 |
5 | class DarkModeController extends GetxController {
6 | //TODO: Implement DarkModeController
7 | var items = [
8 | {"name": "跟随系统", "mode": "system"},
9 | {"name": "夜间模式", "mode": "dark"},
10 | {"name": "白天模式", "mode": "light"},
11 | ];
12 |
13 | var currentTheme = "".obs;
14 |
15 | void switchTheme(int index) {
16 | currentTheme.value = items[index]["mode"] as String;
17 | GetStorage().write("dark_mode", currentTheme.value);
18 | Get.changeTheme(
19 | currentTheme.value == "dark" ? ThemeData.dark() : ThemeData.light());
20 | }
21 |
22 | @override
23 | void onInit() {
24 | currentTheme.value =
25 | GetStorage().read("dark_mode") == "dark" ? "dark" : "light";
26 | super.onInit();
27 | }
28 |
29 | @override
30 | void onReady() {
31 | super.onReady();
32 | }
33 |
34 | @override
35 | void onClose() {}
36 | }
37 |
--------------------------------------------------------------------------------
/lib/app/modules/dynamic/bindings/dynamic_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/dynamic_controller.dart';
4 |
5 | class DynamicBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => DynamicController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/dynamic/controllers/dynamic_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:get/get.dart';
3 | import 'package:pink_acg/app/http/dao/ranking_dao.dart';
4 |
5 | class DynamicController extends GetxController
6 | with SingleGetTickerProviderMixin {
7 | //TODO: Implement DynamicController
8 | var tabs = [
9 | {"key": "video", "name": "视频"},
10 | {"key": "all", "name": "综合"},
11 | ];
12 | late TabController controller;
13 |
14 | @override
15 | void onInit() {
16 | controller = TabController(length: tabs.length, vsync: this);
17 | RankingDao.get("likes");
18 | super.onInit();
19 | }
20 |
21 | @override
22 | void onReady() {
23 | super.onReady();
24 | }
25 |
26 | @override
27 | void onClose() {
28 | controller.dispose();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/lib/app/modules/forgetPwd/bindings/forget_pwd_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/forget_pwd_controller.dart';
4 |
5 | class ForgetPwdBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => ForgetPwdController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/home/bindings/home_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/home_controller.dart';
4 |
5 | class HomeBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => HomeController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/index/bindings/index_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/index_controller.dart';
4 |
5 | class IndexBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => IndexController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/index/controllers/index_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:get/get.dart';
3 | import 'package:pink_acg/app/util/color.dart';
4 |
5 | class IndexController extends GetxController {
6 | //TODO: Implement IndexController
7 | final defaultColor = Color.fromRGBO(86, 91, 97, 1);
8 | final activeColor = primary;
9 | var currentIndex = 0.obs;
10 | static int initialPage = 0;
11 | final PageController controller = PageController(initialPage: initialPage);
12 | late List pages;
13 | bool hasBuild = false;
14 |
15 | @override
16 | void onInit() {
17 | super.onInit();
18 | }
19 |
20 | @override
21 | void onReady() {
22 | super.onReady();
23 | }
24 |
25 | @override
26 | void onClose() {
27 | controller.dispose();
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/lib/app/modules/login/bindings/login_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/login_controller.dart';
4 |
5 | class LoginBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => LoginController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/photoDia/bindings/photo_dia_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/photo_dia_controller.dart';
4 |
5 | class PhotoDiaBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => PhotoDiaController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/photoDia/views/photo_dia_view.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:get/get.dart';
3 | import 'package:photo_view/photo_view.dart';
4 |
5 | import '../controllers/photo_dia_controller.dart';
6 |
7 | class PhotoDiaView extends GetView {
8 | @override
9 | Widget build(BuildContext context) {
10 | return Scaffold(
11 | body: GestureDetector(
12 | child: Center(
13 | child: Obx(() => PhotoView(
14 | imageProvider: NetworkImage(controller.image.value),
15 | )),
16 | ),
17 | onLongPress: () {
18 | controller.getPerm();
19 | },
20 | onTap: () {
21 | Navigator.pop(context);
22 | },
23 | ),
24 | );
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/lib/app/modules/post/bindings/post_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/post_controller.dart';
4 |
5 | class PostBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => PostController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/profile/bindings/profile_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/profile_controller.dart';
4 |
5 | class ProfileBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => ProfileController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/profile/controllers/profile_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:get/get.dart';
3 | import 'package:pink_acg/app/data/user_center_mo.dart';
4 | import 'package:pink_acg/app/http/dao/profile_dao.dart';
5 | import 'package:pink_acg/app/util/toast.dart';
6 | import 'package:pink_net/core/pink_error.dart';
7 |
8 | class ProfileController extends GetxController {
9 | //TODO: Implement ProfileController
10 | final profileMo = UserMeta().obs;
11 | Color color = Colors.white;
12 |
13 | Future loadData() async {
14 | try {
15 | UserMeta result = await ProfileDao.get();
16 | profileMo.value = result;
17 | } on NeedAuth catch (e) {
18 | showToast(e.message);
19 | } on NeedLogin catch (e) {
20 | showToast(e.message);
21 | } on PinkNetError catch (e) {
22 | showToast(e.message);
23 | }
24 | }
25 |
26 | @override
27 | void onInit() {
28 | loadData();
29 | super.onInit();
30 | }
31 |
32 | @override
33 | void onReady() {
34 | super.onReady();
35 | }
36 |
37 | @override
38 | void onClose() {}
39 | }
40 |
--------------------------------------------------------------------------------
/lib/app/modules/profileFollow/bindings/profile_follow_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/profile_follow_controller.dart';
4 |
5 | class ProfileFollowBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => ProfileFollowController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/profilePost/bindings/profile_post_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/profile_post_controller.dart';
4 |
5 | class ProfilePostBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => ProfilePostController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/publish/bindings/publish_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/publish_controller.dart';
4 |
5 | class PublishBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => PublishController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/rank/bindings/rank_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/rank_controller.dart';
4 |
5 | class RankBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => RankController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/rank/controllers/rank_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:get/get.dart';
3 |
4 | class RankController extends GetxController with SingleGetTickerProviderMixin {
5 | //TODO: Implement RankController
6 | var tabs = [
7 | {"key": "likes", "name": "最热"},
8 | {"key": "create_time", "name": "最新"},
9 | {"key": "favorite", "name": "收藏"},
10 | ];
11 | late TabController controller;
12 |
13 | @override
14 | void onInit() {
15 | controller = TabController(length: tabs.length, vsync: this);
16 | super.onInit();
17 | }
18 |
19 | @override
20 | void onReady() {
21 | super.onReady();
22 | }
23 |
24 | @override
25 | void onClose() {
26 | controller.dispose();
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/lib/app/modules/reg/bindings/reg_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/reg_controller.dart';
4 |
5 | class RegBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => RegController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/scan/bindings/scan_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/scan_controller.dart';
4 |
5 | class ScanBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => ScanController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/search/bindings/search_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/search_controller.dart';
4 |
5 | class SearchBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => SearchController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/setting/bindings/setting_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/setting_controller.dart';
4 |
5 | class SettingBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => SettingController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/setting/controllers/setting_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | class SettingController extends GetxController {
4 | //TODO: Implement SettingController
5 | var items = [
6 | {"name": "关于我们", "type": "about-us"},
7 | {"name": "关于App", "type": "about-app"},
8 | ];
9 |
10 | @override
11 | void onInit() {
12 | super.onInit();
13 | }
14 |
15 | @override
16 | void onReady() {
17 | super.onReady();
18 | }
19 |
20 | @override
21 | void onClose() {}
22 | }
23 |
--------------------------------------------------------------------------------
/lib/app/modules/userCenter/bindings/user_center_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/user_center_controller.dart';
4 |
5 | class UserCenterBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => UserCenterController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/userDesc/bindings/user_desc_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/user_desc_controller.dart';
4 |
5 | class UserDescBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => UserDescController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/userDesc/controllers/user_desc_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 | import 'package:pink_acg/app/data/user_center_mo.dart';
3 |
4 | class UserDescController extends GetxController {
5 | //TODO: Implement UserDescController
6 | var profileMo = UserMeta().obs;
7 |
8 | @override
9 | void onInit() {
10 | profileMo.value = (Get.arguments as Map)["profileMo"];
11 | super.onInit();
12 | }
13 |
14 | @override
15 | void onReady() {
16 | super.onReady();
17 | }
18 |
19 | @override
20 | void onClose() {}
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/modules/userEmail/bindings/user_email_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/user_email_controller.dart';
4 |
5 | class UserEmailBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => UserEmailController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/userInfo/bindings/user_info_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/user_info_controller.dart';
4 |
5 | class UserInfoBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => UserInfoController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/userInfo/controllers/user_info_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:get/get.dart';
3 | import 'package:pink_acg/app/data/user_center_mo.dart';
4 | import 'package:pink_acg/app/http/dao/user_update_dao.dart';
5 | import 'package:pink_acg/app/util/toast.dart';
6 | import 'package:pink_net/core/pink_error.dart';
7 |
8 | class UserInfoController extends GetxController {
9 | //TODO: Implement UserInfoController
10 | ScrollController scrollController = ScrollController();
11 | var profileMo = UserMeta().obs;
12 |
13 | Future updateInfo(String slug, String value) async {
14 | try {
15 | var result = await UserUpdateDao.update(slug, value);
16 | if (result["code"] == 1000) {
17 | showToast("修改成功");
18 | } else {
19 | showToast("修改失败");
20 | }
21 | } on NeedLogin catch (e) {
22 | showWarnToast(e.message);
23 | } on NeedAuth catch (e) {
24 | showWarnToast(e.message);
25 | }
26 | }
27 |
28 | @override
29 | void onInit() {
30 | profileMo.value = (Get.arguments as Map)["profileMo"];
31 | super.onInit();
32 | }
33 |
34 | @override
35 | void onReady() {
36 | super.onReady();
37 | }
38 |
39 | @override
40 | void onClose() {
41 | scrollController.dispose();
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/lib/app/modules/userPwd/bindings/user_pwd_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/user_pwd_controller.dart';
4 |
5 | class UserPwdBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => UserPwdController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/userQrcode/bindings/user_qrcode_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/user_qrcode_controller.dart';
4 |
5 | class UserQrcodeBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => UserQrcodeController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/userUsername/bindings/user_username_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/user_username_controller.dart';
4 |
5 | class UserUsernameBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => UserUsernameController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/userUsername/controllers/user_username_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 | import 'package:pink_acg/app/data/user_center_mo.dart';
3 |
4 | class UserUsernameController extends GetxController {
5 | //TODO: Implement UserUsernameController
6 | var profileMo = UserMeta().obs;
7 |
8 | @override
9 | void onInit() {
10 | profileMo.value = (Get.arguments as Map)["profileMo"];
11 | super.onInit();
12 | }
13 |
14 | @override
15 | void onReady() {
16 | super.onReady();
17 | }
18 |
19 | @override
20 | void onClose() {}
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/modules/video/bindings/video_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/video_controller.dart';
4 |
5 | class VideoBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => VideoController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/webBrowser/bindings/web_browser_binding.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../controllers/web_browser_controller.dart';
4 |
5 | class WebBrowserBinding extends Bindings {
6 | @override
7 | void dependencies() {
8 | Get.lazyPut(
9 | () => WebBrowserController(),
10 | );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/app/modules/webBrowser/controllers/web_browser_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 | import 'package:webview_flutter/webview_flutter.dart';
3 |
4 | class WebBrowserController extends GetxController {
5 | //TODO: Implement WebBrowserController
6 | var url = "".obs;
7 | var title = "".obs;
8 | late WebViewController webViewController;
9 |
10 | @override
11 | void onInit() {
12 | super.onInit();
13 | url.value = Get.parameters["url"]!;
14 | if (GetPlatform.isAndroid) WebView.platform = SurfaceAndroidWebView();
15 | }
16 |
17 | @override
18 | void onReady() {
19 | super.onReady();
20 | }
21 |
22 | @override
23 | void onClose() {}
24 | }
25 |
--------------------------------------------------------------------------------
/lib/app/util/clipboard_tool.dart:
--------------------------------------------------------------------------------
1 | //复制粘贴
2 | import 'package:flutter/services.dart';
3 | import 'package:pink_acg/app/util/toast.dart';
4 |
5 | /// 剪切板工具
6 | class ClipboardTool {
7 | //复制内容
8 | static setData(String data) {
9 | if (data != null && data != '') {
10 | Clipboard.setData(ClipboardData(text: data));
11 | }
12 | }
13 |
14 | //复制内容
15 | static setDataToast(String data) {
16 | if (data != null && data != '') {
17 | Clipboard.setData(ClipboardData(text: data));
18 | showToast('复制成功');
19 | }
20 | }
21 |
22 | //复制内容
23 | static setDataToastMsg(String data, {String toastMsg = '复制成功'}) {
24 | if (data != null && data != '') {
25 | Clipboard.setData(ClipboardData(text: data));
26 | showToast(toastMsg);
27 | }
28 | }
29 |
30 | //获取内容
31 | static Future getData() {
32 | return Clipboard.getData(Clipboard.kTextPlain);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/lib/app/util/color.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | /// 颜色工具
4 | const MaterialColor white = MaterialColor(
5 | 0xFFFFFFFF,
6 | {
7 | 50: Color(0xFFFFFFFF),
8 | 100: Color(0xFFF5F5F5),
9 | 200: Color(0xFFFFFFFF),
10 | 300: Color(0xFFFFFFFF),
11 | 400: Color(0xFFFFFFFF),
12 | 500: Color(0xFFFFFFFF),
13 | 600: Color(0xFFFFFFFF),
14 | 700: Color(0xFFFFFFFF),
15 | 800: Color(0xFFFFFFFF),
16 | 900: Color(0xFFFFFFFF),
17 | },
18 | );
19 |
20 | ///主色调
21 | const MaterialColor primary = MaterialColor(0xfffb7299, {
22 | 50: Color(0xffff9db5),
23 | });
24 |
25 | class HiColor {
26 | static const Color red = Color(0xFFFF4759);
27 | static const Color dark_red = Color(0xFFE03E4E);
28 | static const Color dark_bg = Color(0xFF18191A);
29 | }
30 |
--------------------------------------------------------------------------------
/lib/app/util/format_util.dart:
--------------------------------------------------------------------------------
1 | /// 数字转万
2 | String countFormat(int count) {
3 | String views = "";
4 | if (count > 9999) {
5 | views = "${(count / 10000).toStringAsFixed(2)}w";
6 | } else {
7 | views = count.toString();
8 | }
9 | return views;
10 | }
11 |
12 | /// 时间转换将秒转换为分钟:秒
13 | String durationTransform(int seconds) {
14 | int m = (seconds / 60).truncate();
15 | int s = seconds - m * 60;
16 | if (s < 10) {
17 | return "$m:0$s";
18 | }
19 | return "$m:$s";
20 | }
21 |
22 | /// 格式化tz格式时间
23 | String formatDate(DateTime time) {
24 | var year = time.year;
25 | var month = time.month;
26 | var day = time.day;
27 | var hour = time.hour;
28 | var minute = time.minute;
29 | //获取当前时间
30 | DateTime nowTime = DateTime.now();
31 | var nowYear = nowTime.year;
32 | var nowMonth = nowTime.month;
33 | var nowDay = nowTime.day;
34 | if (year == nowYear && month == nowMonth && day == nowDay) {
35 | return "今天$hour:$minute";
36 | } else {
37 | return "$month月$day日";
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/app/util/image_picker.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/animation.dart';
2 | import 'package:photo_manager/photo_manager.dart';
3 | import 'package:pink_acg/app/util/color.dart';
4 | import 'package:wechat_assets_picker/wechat_assets_picker.dart';
5 | import 'package:wechat_camera_picker/wechat_camera_picker.dart';
6 |
7 | Future?> getImagePicker(context,
8 | {required int maxAssets,
9 | RequestType requestType = RequestType.image}) async {
10 | final List? fileList = await AssetPicker.pickAssets(context,
11 | maxAssets: maxAssets,
12 | requestType: requestType,
13 | themeColor: primary,
14 | routeCurve: Curves.fastLinearToSlowEaseIn);
15 | return fileList;
16 | }
17 |
18 | Future getImageCamera(context) async {
19 | final AssetEntity? fileList = await CameraPicker.pickFromCamera(context,
20 | theme: CameraPicker.themeData(primary));
21 | return fileList;
22 | }
23 |
--------------------------------------------------------------------------------
/lib/app/util/pink_defend.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | import 'package:flutter/cupertino.dart';
4 | import 'package:flutter/foundation.dart';
5 | import 'package:flutter_bugly/flutter_bugly.dart';
6 |
7 | class PinkDefend {
8 | run(Widget app) {
9 | // 框架异常
10 | FlutterError.onError = (FlutterErrorDetails details) async {
11 | if (kReleaseMode) {
12 | // 线上环境,走上报流程
13 | Zone.current.handleUncaughtError(details.exception, details.stack!);
14 | } else {
15 | // 开发期间,走控制台
16 | FlutterError.dumpErrorToConsole(details);
17 | }
18 | };
19 | runZonedGuarded(() {
20 | FlutterBugly.postCatchedException(() {
21 | runApp(app);
22 | });
23 | }, (e, s) => _reportError(e, s));
24 | }
25 |
26 | _reportError(Object error, StackTrace s) {
27 | print("当前环境:$kReleaseMode");
28 | print("catch error:$error");
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/lib/app/util/screenutil.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:flutter_screenutil/flutter_screenutil.dart';
3 | import 'package:get/get.dart';
4 |
5 | setScreenInit() {
6 | //设置尺寸(填写设计中设备的屏幕尺寸)如果设计基于360dp * 690dp的屏幕
7 | ScreenUtil.init(BoxConstraints(maxWidth: Get.width, maxHeight: Get.height),
8 | designSize: Size(1080, 2248), orientation: Orientation.portrait);
9 | }
10 |
11 | setWidth(int width) {
12 | return width.w;
13 | }
14 |
15 | setHeight(int height) {
16 | return height.h;
17 | }
18 |
19 | setR(int height) {
20 | return height.r;
21 | }
22 |
23 | setRadius(int radius) {
24 | return ScreenUtil().radius(radius);
25 | }
26 |
27 | setSp(int sp) {
28 | return sp.sp;
29 | }
30 |
--------------------------------------------------------------------------------
/lib/app/util/string_util.dart:
--------------------------------------------------------------------------------
1 | /// 判断是否为空
2 | bool isNotEmpty(String text) {
3 | return text.isNotEmpty ? text.isNotEmpty : false;
4 | }
5 |
6 | /// 判断是否为空
7 | bool isEmpty(String text) {
8 | return text.isEmpty ? text.isEmpty : true;
9 | }
10 |
11 | // 邮箱判断
12 | bool isEmail(String input) {
13 | String regexEmail =
14 | "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}\$";
15 | if (input.isEmpty) return false;
16 | return RegExp(regexEmail).hasMatch(input);
17 | }
18 |
--------------------------------------------------------------------------------
/lib/app/util/toast.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:fluttertoast/fluttertoast.dart';
3 |
4 | /// 警告通知
5 | void showWarnToast(String text) {
6 | Fluttertoast.showToast(
7 | msg: text,
8 | toastLength: Toast.LENGTH_LONG,
9 | gravity: ToastGravity.CENTER,
10 | backgroundColor: Colors.red,
11 | textColor: Colors.white);
12 | }
13 |
14 | /// 正常通知
15 | void showToast(String text) {
16 | Fluttertoast.showToast(
17 | msg: text, toastLength: Toast.LENGTH_LONG, gravity: ToastGravity.CENTER);
18 | }
19 |
--------------------------------------------------------------------------------
/lib/app/util/video_analysis.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:dio/dio.dart';
4 |
5 | Future getHttp(url) async {
6 | FormData formData = FormData.fromMap({"url": url});
7 | var response = await Dio().post(
8 | "https://www.daimadog.com/wp-content/themes/mytheme/action/dyjx.php",
9 | data: formData);
10 | var data = jsonDecode(response.toString());
11 | return data["playurl"][0];
12 | }
13 |
14 | Future getHttp2(url) async {
15 | var response = await Dio()
16 | .get("https://tenapi.cn/bilivideo/", queryParameters: {"url": url});
17 | var data = jsonDecode(response.toString());
18 | return data["url"];
19 | }
20 |
--------------------------------------------------------------------------------
/lib/app/widget/login/login_button.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:pink_acg/app/util/color.dart';
3 | import 'package:pink_acg/app/util/screenutil.dart';
4 |
5 | class LoginButton extends StatelessWidget {
6 | final String title;
7 | final bool enable;
8 | final VoidCallback? onPressed;
9 |
10 | const LoginButton(this.title, {Key? key, this.enable = true, this.onPressed})
11 | : super(key: key);
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return FractionallySizedBox(
16 | widthFactor: 1,
17 | child: MaterialButton(
18 | shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(6)),
19 | height: 45,
20 | onPressed: enable ? onPressed : null,
21 | disabledColor: primary[50],
22 | color: primary,
23 | child: Text(
24 | title,
25 | style: TextStyle(color: Colors.white, fontSize: setSp(50)),
26 | ),
27 | ),
28 | );
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/lib/app/widget/login/login_effect.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | ///登录效果 自定义widget
4 | class LoginEffect extends StatelessWidget {
5 | final bool protect;
6 | const LoginEffect({Key? key, required this.protect}) : super(key: key);
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return Container(
11 | padding: EdgeInsets.only(top: 10),
12 | decoration: BoxDecoration(
13 | color: Colors.grey[100],
14 | border: Border(bottom: BorderSide(color: Colors.grey))),
15 | child: Row(
16 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
17 | children: [
18 | _image(true),
19 | Image(
20 | height: 90,
21 | width: 90,
22 | image: AssetImage('assets/images/logo.png'),
23 | ),
24 | _image(false),
25 | ],
26 | ),
27 | );
28 | }
29 |
30 | _image(bool left) {
31 | var headLeft = protect
32 | ? 'assets/images/head_left_protect.png'
33 | : 'assets/images/head_left.png';
34 | var headRight = protect
35 | ? 'assets/images/head_right_protect.png'
36 | : 'assets/images/head_right.png';
37 | return Image(
38 | height: 90,
39 | image: AssetImage(left ? headLeft : headRight),
40 | );
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/lib/app/widget/not_found.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:get/get.dart';
3 | import 'package:pink_acg/app/util/screenutil.dart';
4 | import '../util/view_util.dart';
5 |
6 | class NotFound extends StatelessWidget {
7 | const NotFound({Key? key}) : super(key: key);
8 |
9 | @override
10 | Widget build(BuildContext context) {
11 | return Container(
12 | alignment: Alignment.center,
13 | margin: EdgeInsets.only(top: 40),
14 | width: Get.width,
15 | height: setHeight(650),
16 | child: Column(
17 | children: [
18 | Image(
19 | height: 150,
20 | fit: BoxFit.cover,
21 | image: AssetImage('assets/images/404.png'),
22 | ),
23 | hiSpace(height: 20),
24 | Text(
25 | "这里什么都没有······",
26 | style: TextStyle(fontSize: setSp(36), color: Colors.grey),
27 | )
28 | ],
29 | ),
30 | );
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/lib/app/widget/update.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | class Update extends StatefulWidget {
5 | final String serverAndroidVersion;
6 | final String serverAndroidMsg;
7 | final VoidCallback close;
8 | final VoidCallback update;
9 | const Update(
10 | {Key? key,
11 | required this.serverAndroidVersion,
12 | required this.close,
13 | required this.update,
14 | required this.serverAndroidMsg})
15 | : super(key: key);
16 |
17 | @override
18 | _UpdateState createState() => _UpdateState();
19 | }
20 |
21 | class _UpdateState extends State {
22 | @override
23 | Widget build(BuildContext context) {
24 | return Positioned(
25 | child: AlertDialog(
26 | title: Text('检测到新版本:v${widget.serverAndroidVersion}'),
27 | content: Text('${widget.serverAndroidMsg}'),
28 | elevation: 24,
29 | actions: [
30 | TextButton(
31 | child: Text('下次一定'),
32 | onPressed: widget.close,
33 | ),
34 | TextButton(
35 | child: Text('立即更新'),
36 | onPressed: widget.update,
37 | ),
38 | ],
39 | ));
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/lib/pink_constants.dart:
--------------------------------------------------------------------------------
1 | import 'package:pink_acg/app/http/dao/login_dao.dart';
2 |
3 | /// 全局config配置文件
4 | class PinkConstants {
5 | static String domain = "10.0.2.2";
6 | // static String domain = "localhost";
7 | // static String domain = "81.69.27.9";
8 | static String ossDomain = "https://img.catacg.cn";
9 | static String port = "8080";
10 | static String versionPath = "/api/v1";
11 | static String buglyAndroidId = "de5481f58a";
12 | static String buglyIosId = "49ff050403";
13 | static String qq = "3142493883";
14 |
15 | // 登录token验证
16 | static const authorization = 'authorization';
17 |
18 | static header() {
19 | Map header = {};
20 | header[authorization] = LoginDao.getBoardingPass();
21 | return header;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-14-47-022_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-14-47-022_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-14-51-122_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-14-51-122_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-14-55-429_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-14-55-429_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-14-57-881_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-14-57-881_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-15-03-883_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-15-03-883_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-15-16-766_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-15-16-766_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-15-22-130_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-15-22-130_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-15-25-046_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-15-25-046_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-15-35-090_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-15-35-090_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-15-37-651_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-15-37-651_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-15-43-388_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-15-43-388_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-15-52-607_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-15-52-607_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-15-58-026_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-15-58-026_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-16-01-595_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-16-01-595_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-16-07-861_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-16-07-861_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-16-25-974_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-16-25-974_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-16-42-516_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-16-42-516_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-16-58-577_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-16-58-577_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-17-12-053_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-17-12-053_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/md-image/Screenshot_2021-11-12-18-17-16-991_com.pinkacg.pi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-17-16-991_com.pinkacg.pi.jpg
--------------------------------------------------------------------------------
/test/widget_test.dart:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/test/widget_test.dart
--------------------------------------------------------------------------------
/web/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/web/favicon.png
--------------------------------------------------------------------------------
/web/icons/Icon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/web/icons/Icon-192.png
--------------------------------------------------------------------------------
/web/icons/Icon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/web/icons/Icon-512.png
--------------------------------------------------------------------------------
/web/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "pink_acg",
3 | "short_name": "pink_acg",
4 | "start_url": ".",
5 | "display": "standalone",
6 | "background_color": "#0175C2",
7 | "theme_color": "#0175C2",
8 | "description": "A new Flutter project.",
9 | "orientation": "portrait-primary",
10 | "prefer_related_applications": false,
11 | "icons": [
12 | {
13 | "src": "icons/Icon-192.png",
14 | "sizes": "192x192",
15 | "type": "image/png"
16 | },
17 | {
18 | "src": "icons/Icon-512.png",
19 | "sizes": "512x512",
20 | "type": "image/png"
21 | }
22 | ]
23 | }
24 |
--------------------------------------------------------------------------------