first commit

This commit is contained in:
编码猿
2024-09-27 01:32:49 +08:00
commit 28ebe05a64
7399 changed files with 1174529 additions and 0 deletions

76
moehu/moehu_fontend/.gitignore vendored Normal file
View File

@@ -0,0 +1,76 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
key.jks
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/
# Web related
lib/generated_plugin_registrant.dart
# Symbolication related
app.*.symbols
# Obfuscation related
app.*.map.json
# Exceptions to above rules.
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
.vscode/
pubspec.lock
Podfile
Podfile.lock
Pods/
.symlinks/
**/Flutter/App.framework/
**/Flutter/Flutter.framework/
**/Flutter/Generated.xcconfig
**/Flutter/flutter_assets/
ServiceDefinitions.json
xcuserdata/
**/DerivedData/
local.properties
keystore.properties
.gradle/
gradlew
gradlew.bat
gradle-wrapper.jar
GeneratedPluginRegistrant.h
GeneratedPluginRegistrant.m
GeneratedPluginRegistrant.java
build/
.project
.classpath
.settings
!.idea/

View File

@@ -0,0 +1,10 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
version:
revision: 8f89f6505b941329a864fef1527243a72800bf4d
channel: beta
project_type: app

View File

@@ -0,0 +1 @@
52bfd07d-cfdb-44d7-b369-72815fb569f6

View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2021 编码猿
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

11
moehu/moehu_fontend/android/.gitignore vendored Normal file
View File

@@ -0,0 +1,11 @@
gradle-wrapper.jar
/.gradle
/captures/
/gradlew
/gradlew.bat
/local.properties
GeneratedPluginRegistrant.java
# Remember to never publicly share your keystore.
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
key.properties

View File

@@ -0,0 +1 @@
f4219bd4-013f-4bb9-83ee-4142e2dca6ac

View File

@@ -0,0 +1 @@
d999f01a-51e3-49c2-a152-d1508bb04df7

View File

@@ -0,0 +1,85 @@
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
lintOptions {
checkReleaseBuilds false
abortOnError false
}
compileSdkVersion 30
aaptOptions {
cruncherEnabled = false
}
defaultConfig {
applicationId "com.picture.peach"
minSdkVersion 19
targetSdkVersion 29
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
multiDexEnabled true
ndk {
abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64', 'arm64-v8a'
}
manifestPlaceholders = [
JPUSH_PKGNAME: applicationId,
JPUSH_APPKEY : "d4e22ab876276f4a374880ca", // NOTE: JPush 上注册的包名对应的 Appkey.
JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可.
]
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.release
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
flutter {
source '../..'
}

View File

@@ -0,0 +1,7 @@
#Flutter Wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }

View File

@@ -0,0 +1 @@
f8e1880b-fa06-4cf2-a532-038e4fadb7c3

View File

@@ -0,0 +1 @@
ae0c387f-d326-4fa3-a2b3-84afaaaf428c

View File

@@ -0,0 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.picture.peach">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

View File

@@ -0,0 +1 @@
56fb7271-3796-49e0-8564-af943ea0cb29

View File

@@ -0,0 +1 @@
767ad59c-1935-4dde-91eb-e1187d2a1399

View File

@@ -0,0 +1 @@
53356f2c-18b8-4898-a04a-4b5ed344ad3d

View File

@@ -0,0 +1 @@
018f8e15-d665-4625-b101-c7303ff7d4ea

View File

@@ -0,0 +1,8 @@
/*___Generated_by_IDEA___*/
package com.picture.peach;
/* This stub is only used by the IDE. It is NOT the BuildConfig class actually packed into the APK */
public final class BuildConfig {
public final static boolean DEBUG = Boolean.parseBoolean(null);
}

View File

@@ -0,0 +1,7 @@
/*___Generated_by_IDEA___*/
package com.picture.peach;
/* This stub is only used by the IDE. It is NOT the Manifest class actually packed into the APK */
public final class Manifest {
}

View File

@@ -0,0 +1,7 @@
/*___Generated_by_IDEA___*/
package com.picture.peach;
/* This stub is only used by the IDE. It is NOT the R class actually packed into the APK */
public final class R {
}

View File

@@ -0,0 +1 @@
03e13271-5809-4fe3-a1d2-c4e9a06f7c0b

View File

@@ -0,0 +1,74 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.picture.peach">
<!--允许程序写入外部存储-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允许获取网络信息状态-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--允许获取当前WiFi接入的状态以及WLAN热点的信息-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--允许程序访问网络连接可能产生GPRS流量-->
<uses-permission android:name="android.permission.INTERNET" />
<!--允许程序访问电话状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--允许应用程序读取设备外部存储空间的文件-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!--允许程序写入外部存储-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--安装app-->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<!--允许挂载和反挂载外部文件系统可移动存储-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name = "android.permission.SET_WALLPAPER"/>
<application
android:label="萌弧"
android:requestLegacyExternalStorage="true"
android:icon="@mipmap/ic_launcher">
<activity
android:name="com.picture.peach.MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<!-- Displays an Android View that continues showing the launch screen
Drawable until Flutter paints its first frame, then this splash
screen fades out. A splash screen is useful to avoid any visual
gap between the end of Android's launch screen and the painting of
Flutter's first frame. -->
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<!--通过浏览器Url启动app-->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="openfile"
android:scheme="mitao" />
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
</manifest>

View File

@@ -0,0 +1 @@
a65739f2-208f-479a-b272-24aa2e330469

View File

@@ -0,0 +1 @@
f9d5d4de-04fd-47a1-95c8-b74114af895c

View File

@@ -0,0 +1 @@
4cb1305a-47f4-4708-ab10-939ce7c2c690

View File

@@ -0,0 +1 @@
9e2fcc2f-02f8-4fa3-862e-2729c17194cf

View File

@@ -0,0 +1,6 @@
package com.picture.peach;
import io.flutter.embedding.android.FlutterActivity;
public class MainActivity extends FlutterActivity {
}

View File

@@ -0,0 +1 @@
8c38920b-d4b7-4b81-9eff-3b801983f20c

View File

@@ -0,0 +1 @@
67b848cd-6230-490d-be2c-7728efd778c5

View File

@@ -0,0 +1 @@
a776807c-767c-4ea8-8508-606bffe39af7

View File

@@ -0,0 +1 @@
61b21d8b-d16b-46f9-9658-b73df3ac855a

View File

@@ -0,0 +1 @@
76906fba-4307-486c-91d0-e6fd1e2a6c00

View File

@@ -0,0 +1 @@
1f47ee14-cdf3-4b41-866f-a7ccb2ce224c

View File

@@ -0,0 +1 @@
c45e48c8-8252-4edb-bb46-d4b34eee6c9c

View File

@@ -0,0 +1,6 @@
package com.example.untitled
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity() {
}

View File

@@ -0,0 +1 @@
813c7344-cec3-4da7-8fb9-d66cb230569d

View File

@@ -0,0 +1 @@
531d2a2c-22b0-4e7e-85c2-d8a6dbe5e5c4

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="?android:colorBackground" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>

View File

@@ -0,0 +1 @@
9fc91308-c605-4fab-8613-a43bf5722325

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>

View File

@@ -0,0 +1 @@
a163d701-ea40-446a-9c3e-7793ea5b4b65

Binary file not shown.

After

Width:  |  Height:  |  Size: 885 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 885 KiB

View File

@@ -0,0 +1 @@
6c3594e5-502d-4bdc-ad70-878ec98c7e78

Binary file not shown.

After

Width:  |  Height:  |  Size: 885 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 885 KiB

View File

@@ -0,0 +1 @@
89cc3ea4-9aba-45e6-acde-c21be7632d88

Binary file not shown.

After

Width:  |  Height:  |  Size: 885 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 885 KiB

View File

@@ -0,0 +1 @@
719c1bed-38ed-425f-82ad-1f5a8c8d81b8

Binary file not shown.

After

Width:  |  Height:  |  Size: 885 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 885 KiB

View File

@@ -0,0 +1 @@
9efd6c5b-1643-49c7-ad3d-2a4cc33c8884

Binary file not shown.

After

Width:  |  Height:  |  Size: 885 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 885 KiB

View File

@@ -0,0 +1 @@
15698020-39d1-4158-8541-2807ae72fc21

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>

View File

@@ -0,0 +1 @@
91e98743-a80e-4a40-9b8c-7f510f1b33f4

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>

View File

@@ -0,0 +1 @@
810c3868-93cd-4f27-a43f-3b795e9cf4d3

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>

View File

@@ -0,0 +1 @@
88803387-c8f3-43ce-a709-7d2336074c8f

View File

@@ -0,0 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.picture.peach">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

View File

@@ -0,0 +1 @@
4957fecb-f65b-44d6-aa3e-b46d327334bf

View File

@@ -0,0 +1 @@
442ddfcf-bc98-45b1-a346-d45521bff00f

View File

@@ -0,0 +1 @@
95b2caea-1309-486a-80e4-4193457aeebf

View File

@@ -0,0 +1 @@
102ce947-2f16-4550-9074-1c9579f6bc66

View File

@@ -0,0 +1,8 @@
/*___Generated_by_IDEA___*/
package com.picture.peach;
/* This stub is only used by the IDE. It is NOT the BuildConfig class actually packed into the APK */
public final class BuildConfig {
public final static boolean DEBUG = Boolean.parseBoolean(null);
}

View File

@@ -0,0 +1,7 @@
/*___Generated_by_IDEA___*/
package com.picture.peach;
/* This stub is only used by the IDE. It is NOT the Manifest class actually packed into the APK */
public final class Manifest {
}

View File

@@ -0,0 +1,7 @@
/*___Generated_by_IDEA___*/
package com.picture.peach;
/* This stub is only used by the IDE. It is NOT the R class actually packed into the APK */
public final class R {
}

View File

@@ -0,0 +1,31 @@
buildscript {
repositories {
google()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
}
}
allprojects {
repositories {
google()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
jcenter()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}

View File

@@ -0,0 +1,3 @@
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true

View File

@@ -0,0 +1 @@
e9de2531-0c6a-4663-99e3-584bc2965fd1

View File

@@ -0,0 +1 @@
858e9273-7206-4223-aebf-430887d9c8c4

View File

@@ -0,0 +1,6 @@
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip

View File

@@ -0,0 +1,11 @@
include ':app'
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
def properties = new Properties()
assert localPropertiesFile.exists()
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"

View File

@@ -0,0 +1 @@
include ':app'

View File

@@ -0,0 +1,91 @@
import 'dart:io';
// ignore: non_constant_identifier_names
var preview_server_port = 2227;
void main() async {
bool working = false;
var pubSpec = new File('pubspec.yaml');
var pubLines = pubSpec.readAsLinesSync();
var newLines = <String>[];
var resource = <String>[];
for (var line in pubLines) {
if (line.contains('begin') && line.contains('#') && line.contains('assets')) {
working = true;
newLines.add(line);
}
if (line.contains('end') && line.contains('#') && line.contains('assets')) working = false;
if (working) {
if (line.trim().startsWith('#') && line.trim().endsWith('*')) {
newLines.add(line);
var directory = new Directory(line.replaceAll('#', '').replaceAll('*', '').trim());
if (directory.existsSync()) {
var list = directory.listSync(recursive: true);
resource.add("/// 静态资源配置,程序自动生成,请勿手动修改");
for (var file in list) {
if (new File(file.path)
.statSync()
.type == FileSystemEntityType.file) {
var path = file.path.replaceAll('\\', '/');
var varName = path.replaceAll('/', '_').replaceAll('.', '_').toLowerCase();
var pos = 0;
String char;
while (true) {
pos = varName.indexOf('_', pos);
if (pos == -1) break;
char = varName.substring(pos + 1, pos + 2);
varName = varName.replaceFirst('_$char', '_${char.toUpperCase()}');
pos++;
}
varName = varName.replaceAll('_', '');
resource.add("/// ![](http://127.0.0.1:$preview_server_port/$path)");
resource.add("static final String $varName = '$path';");
newLines.add(' - $path');
}
}
} else {
throw new FileSystemException('Directory wrong');
}
}
} else {
newLines.add(line);
}
}
var r = new File('lib/R.dart');
if (r.existsSync()) {
r.deleteSync();
}
r.createSync();
var content = 'class R {\n';
for (var line in resource) {
content = '$content $line\n';
}
content = '$content}\n';
r.writeAsStringSync(content);
var spec = '';
for (var line in newLines) {
spec = '$spec$line\n';
}
pubSpec.writeAsStringSync(spec);
var ser;
try {
ser = await HttpServer.bind('127.0.0.1', preview_server_port);
print('成功启动图片预览服务器于本机<$preview_server_port>端口');
ser.listen(
(req) {
var index = req.uri.path.lastIndexOf('.');
var subType = req.uri.path.substring(index);
req.response
..headers.contentType = new ContentType('image', subType)
..add(new File('.${req.uri.path}').readAsBytesSync())
..close();
},
);
} catch (e) {
print('图片预览服务器已启动或端口被占用');
}
}

View File

@@ -0,0 +1 @@
f00569f9-4bf1-4de4-8769-6946d962a9ce

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1021 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 KiB

View File

@@ -0,0 +1 @@
0ae5bbce-572e-45de-ac96-81e805cc694a

View File

@@ -0,0 +1 @@
b6edff28-8ab8-4e51-869a-0e6da7720681

View File

@@ -0,0 +1,37 @@
import 'package:event_bus/event_bus.dart';
import 'package:flutter/material.dart';
import 'package:package_info/package_info.dart';
import 'package:peach/utils/_.dart';
import 'config/_.dart';
import 'package:device_info/device_info.dart';
/*
* 各种工具和配置的初始化
*/
class Configure {
static Future init() async {
// 运行初始
WidgetsFlutterBinding.ensureInitialized();
// SharedPreferences 初始化
await SPreferences.init();
// 是否第一次打开的判断
Config.isFirstOpen = !SPreferences().getBool("isFirstOpen");
// 是否第一次打开的判断
Config.isLogin = !SPreferences().getIsLogin();
// 初始化事件控制中心
Config.eventBus = EventBus();
// 读取保存设备信息
DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
Config.isAndroid
? Config.androidDeviceInfo = await deviceInfoPlugin.androidInfo
: Config.iosDeviceInfo = await deviceInfoPlugin.iosInfo;
// 保存App软件包信息
Config.packageInfo = await PackageInfo.fromPlatform();
}
}

View File

@@ -0,0 +1,53 @@
class R {
/// 静态资源配置,程序自动生成,请勿手动修改
/// ![](http://127.0.0.1:2227/lib/static/img/update_ic_close.png)
static final String libStaticImgUpdateIcClosePng =
'lib/static/img/update_ic_close.png';
/// ![](http://127.0.0.1:2227/lib/static/img/taxi.png)
static final String libStaticImgTaxiPng = 'lib/static/img/taxi.png';
/// ![](http://127.0.0.1:2227/lib/static/img/.DS_Store)
static final String libStaticImgDsStore = 'lib/static/img/.DS_Store';
/// ![](http://127.0.0.1:2227/lib/static/img/welcome3.png)
static final String libStaticImgWelcome3Png = 'lib/static/img/welcome3.png';
/// ![](http://127.0.0.1:2227/lib/static/img/welcome2.png)
static final String libStaticImgWelcome2Png = 'lib/static/img/welcome2.png';
/// ![](http://127.0.0.1:2227/lib/static/img/update_bg_app_top.png)
static final String libStaticImgUpdateBgAppTopPng =
'lib/static/img/update_bg_app_top.png';
/// ![](http://127.0.0.1:2227/lib/static/img/logo.png)
static final String libStaticImgLogoPng = 'lib/static/img/logo.png';
/// ![](http://127.0.0.1:2227/lib/static/img/vipLogo.png)
static final String libStaticImgViplogoPng = 'lib/static/img/vipLogo.png';
/// ![](http://127.0.0.1:2227/lib/static/img/back.png)
static final String libStaticImgBackPng = 'lib/static/img/back.png';
/// ![](http://127.0.0.1:2227/lib/static/img/SignupBackground.png)
static final String libStaticSignupBackground =
'lib/static/img/SignupBackground.png';
/// ![preview](file:///private/tmp/like_wechat_input/./asset/add.png)
static const String ASSET_ADD_PNG = "lib/static/img/add.png";
/// ![preview](file:///private/tmp/like_wechat_input/./asset/emoji.png)
static const String ASSET_EMOJI_PNG = "lib/static/img/emoji.png";
/// ![preview](file:///private/tmp/like_wechat_input/./asset/keyboard.png)
static const String ASSET_KEYBOARD_PNG = "lib/static/img/keyboard.png";
/// ![preview](file:///private/tmp/like_wechat_input/./asset/voice.png)
static const String ASSET_VOICE_PNG = "lib/static/img/voice.png";
/// ![preview](file:///private/tmp/like_wechat_input/./asset/voice.png)
static const String libStaticAddTo = "lib/static/img/addTo.png";
/// ![preview](file:///private/tmp/like_wechat_input/./asset/voice.png)
static const String libStaticAndroidTemplate = "lib/static/img/android-template.png";
}

View File

@@ -0,0 +1 @@
81345919-9c5e-4882-af8d-580d39746f99

View File

@@ -0,0 +1,28 @@
import 'package:flutter/material.dart';
class ColorConfig {
// 主题色
static const Color ThemeColor = Color(0XFF17d2d8);
// static const Color ThemeColor = Color(0XFFffd101);
// 比主题稍微淡一点的主题色
static const Color ThemeOtherColor = Color(0XFF9df1f3);
// cell 左侧图标的颜色
static const Color IconColor = Color(0XFFc3c0c0);
// 某些标题的黑色
static const Color TitleColor = Color(0XFF333333);
// 某些稍微灰色一点的字体颜色
static const Color TextColor = Color(0XFF7e7979);
// 未激活时候的字体颜色
static const Color NoActiveColor = Color(0XFFd3d2d2);
static const Color LineColor = Color(0XFFefefef);
// 背景置灰使用和未激活不同
static const Color AshPlacement = Color(0XFFf4f4f4);
// 可点击的文字颜色
static const Color Jump = Color(0XFF00c0cc);
// 黑色
static const Color BlackBackColor = Color(0XFF000000);
// 白色背景
static const Color WhiteBackColor = Colors.white;
//
static const Color TransparentBackground = Color(0X8c000000);
}

View File

@@ -0,0 +1,177 @@
import 'dart:io';
import 'package:event_bus/event_bus.dart';
import 'package:intro_views_flutter/intro_views_flutter.dart';
import 'package:package_info/package_info.dart';
import 'package:device_info/device_info.dart';
import 'package:flutter/material.dart';
import 'dart:ui';
import 'package:peach/R.dart';
import 'package:peach/utils/_.dart';
import 'Colors.dart';
class Config {
static double top = MediaQueryData.fromWindow(window).padding.top;
/// 第一次打开本地无值返回false取反为true所以显示welcome
/// 第二次打开本地有值返回true取反false所以显示app页面
static bool isFirstOpen = false;
/// 第一次打开未登录本地无值返回false取反为true访问登录页面
/// 第二次打开已登录本地有值返回true取反为返回false访问app页面
static bool isLogin = true;
/// App 的名字
static String appName = "萌弧";
/// 保存 App安装包信息
static PackageInfo packageInfo;
/// 是否为 android
static bool isAndroid = Platform.isAndroid;
/// 保存 android 设备信息
static AndroidDeviceInfo androidDeviceInfo;
/// 是否为 ios
static bool isIos = Platform.isIOS;
/// 保存 ios 设备信息
static IosDeviceInfo iosDeviceInfo;
// app的上下文
static BuildContext context;
/// IOS app 下载地址
// static String iosDownApkUrl = "https://apps.apple.com/cn/app/qq/id444934666";
static String iosDownApkUrl =
"itms-apps://itunes.apple.com/cn/app/id444934666";
/// 首页 /home.html
static String h5IpUrl = "http://47.114.153.249/page/";
static String shareIpUrl = "http://47.114.153.249/share/";
static String h5DomainUrl = "http://www.geekhelp.cn/page/";
/// 首页底部Tab的控制器
static PageController tabController;
/// 事件控制中心
static EventBus eventBus;
/// 接口地址
static final Map<String, dynamic> ApiUrl = {
// 接口基地址
'PhotoBaseUrl': 'https://moehu.net/app',
// 'PhotoBaseUrl': 'http://192.168.31.100:8090/app',
// 接口地址
'ApiList': {
'login': '/user/Login',
'reg': '/user/Reg',
'opusRecommend': '/opus/Recommend',
'opusOpusInfo': '/opus/OpusInfo',
'commentAdd': '/comment/add',
'commentList': '/comment/list',
'checkUserIsFollow': '/opus/CheckUserIsFollow',
'opusFollowUser': '/opus/FollowUser',
'opusCollectionOpus': '/opus/CollectionOpus',
'opusCheckOpusIsUpvote': '/opus/CheckIsUpvote',
'opusUpvoteOpus': '/opus/UpvoteOpus',
'toolUploadFile': '/tool/UploadFile',
'opusPushOpus': '/opus/PushOpus',
'opusCheckOpusIsCollection': '/opus/CheckOpusIsCollection',
'dynamicPersonalDynamic': '/dynamic/PersonalDynamic',
'dynamicPush': '/dynamic/Push',
'dynamicTabsDynamic': '/dynamic/TabsDynamic',
'dynamicDynamicHistory': '/dynamic/DynamicHistory',
'tagRecommendTag': '/tag/RecommendTag',
'opusRanking': '/opus/Ranking',
'opusOpusSearch': '/opus/OpusSearch',
'dynamicInfo': '/dynamic/Info',
'OpusTag': '/tag/OpusTag',
'OpusInfoCreatedTags': '/tag/OpusInfoCreatedTags',
'UpdateTagsEditStatus': '/tag/UpdateTagsEditStatus',
'DeleteTag': '/tag/DeleteTag',
'UserInfo': '/user/UserInfo',
'CollectionOpusList': '/opus/CollectionOpusList',
'Follow': '/opus/Follow',
'getOpusList': '/opus/OpusList',
'Update': '/tool/Update',
'FansUserList': '/user/FansUserList',
'FollowUserList': '/user/FollowUserList'
}
};
static final List<PageViewModel> pages = [
PageViewModel(
pageColor: ColorConfig.ThemeColor,
body: Text(
'一款专业的插画交流平台',
style: TextStyle(fontSize: Screen.setFontSize(17.0)),
),
title: Text(
Config.appName,
style: TextStyle(fontSize: Screen.setFontSize(30.0)),
),
textStyle: TextStyle(color: Colors.white),
mainImage: Image.asset(
R.libStaticAndroidTemplate,
height: Screen.setHeight(225.0),
width: Screen.setWidth(225.0),
alignment: Alignment.center,
)),
PageViewModel(
pageColor: const Color(0xFF03A9F4),
body: Text(
'在这里您可以和更多志趣相投的人进行沟通学习',
style: TextStyle(fontSize: Screen.setFontSize(17.0)),
),
title: Text(
'遇见.朋友',
style: TextStyle(fontSize: Screen.setFontSize(30.0)),
),
textStyle: TextStyle(color: Colors.white),
mainImage: Image.asset(
R.libStaticImgWelcome2Png,
height: Screen.setHeight(255.0),
width: Screen.setWidth(255.0),
alignment: Alignment.center,
)),
PageViewModel(
pageColor: const Color(0xFF8BC34A),
body: Text(
'你的热爱在这都必将得到回应',
style: TextStyle(fontSize: Screen.setFontSize(17.0)),
),
title: Text(
'付出.得到',
style: TextStyle(fontSize: Screen.setFontSize(30.0)),
),
mainImage: Image.asset(
R.libStaticImgWelcome3Png,
height: Screen.setHeight(255.0),
width: Screen.setWidth(255.0),
alignment: Alignment.center,
),
textStyle: TextStyle(color: Colors.white),
),
PageViewModel(
pageColor: const Color(0xFF607D8B),
body: Text(
'点击【进入】开始使用!',
style: TextStyle(fontSize: Screen.setFontSize(17.0)),
),
title: Text(
'开始使用',
style: TextStyle(fontSize: Screen.setFontSize(30.0)),
),
mainImage: Image.asset(
R.libStaticImgTaxiPng,
height: Screen.setHeight(255.0),
width: Screen.setWidth(255.0),
alignment: Alignment.center,
),
textStyle: TextStyle(color: Colors.white),
),
];
}

View File

@@ -0,0 +1,4 @@
library config;
export 'Colors.dart';
export 'Index.dart';

View File

@@ -0,0 +1 @@
b881cb83-9761-4b50-991e-5da6ea4c2a58

View File

@@ -0,0 +1,32 @@
class CheckUserIsFollowEntityList {
int _code;
String _message;
bool _data;
CheckUserIsFollowEntityList({int code, String message, bool data}) {
this._code = code;
this._message = message;
this._data = data;
}
int get code => _code;
set code(int code) => _code = code;
String get message => _message;
set message(String message) => _message = message;
bool get data => _data;
set data(bool data) => _data = data;
CheckUserIsFollowEntityList.fromJson(Map<String, dynamic> json) {
_code = json['code'];
_message = json['message'];
_data = json['data'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['code'] = this._code;
data['message'] = this._message;
data['data'] = this._data;
return data;
}
}

View File

@@ -0,0 +1,208 @@
class CollectionOpusListEntityList {
int _code;
String _message;
CollectionOpusListEntityData _data;
CollectionOpusListEntityList(
{int code, Null message, CollectionOpusListEntityData data}) {
this._code = code;
this._message = message;
this._data = data;
}
int get code => _code;
set code(int code) => _code = code;
Null get message => _message;
set message(Null message) => _message = message;
CollectionOpusListEntityData get data => _data;
set data(CollectionOpusListEntityData data) => _data = data;
CollectionOpusListEntityList.fromJson(Map<String, dynamic> json) {
_code = json['code'];
_message = json['message'];
_data = json['data'] != null
? new CollectionOpusListEntityData.fromJson(json['data'])
: null;
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['code'] = this._code;
data['message'] = this._message;
if (this._data != null) {
data['data'] = this._data.toJson();
}
return data;
}
}
class CollectionOpusListEntityData {
int _nextPage;
List<CollectionOpusListEntityResult> _result;
int _totalPage;
int _currentPage;
CollectionOpusListEntityData(
{int nextPage,
List<CollectionOpusListEntityResult> result,
int totalPage,
int currentPage}) {
this._nextPage = nextPage;
this._result = result;
this._totalPage = totalPage;
this._currentPage = currentPage;
}
int get nextPage => _nextPage;
set nextPage(int nextPage) => _nextPage = nextPage;
List<CollectionOpusListEntityResult> get result => _result;
set result(List<CollectionOpusListEntityResult> result) => _result = result;
int get totalPage => _totalPage;
set totalPage(int totalPage) => _totalPage = totalPage;
int get currentPage => _currentPage;
set currentPage(int currentPage) => _currentPage = currentPage;
CollectionOpusListEntityData.fromJson(Map<String, dynamic> json) {
_nextPage = json['next_page'];
if (json['result'] != null) {
_result = new List<CollectionOpusListEntityResult>();
json['result'].forEach((v) {
_result.add(new CollectionOpusListEntityResult.fromJson(v));
});
}
_totalPage = json['total_page'];
_currentPage = json['current_page'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['next_page'] = this._nextPage;
if (this._result != null) {
data['result'] = this._result.map((v) => v.toJson()).toList();
}
data['total_page'] = this._totalPage;
data['current_page'] = this._currentPage;
return data;
}
}
class CollectionOpusListEntityResult {
int _opusId;
int _userId;
String _opusTitle;
String _opusIntroduce;
String _opusTime;
int _opusSatisfied;
int _opusSee;
int _opusFollow;
int _opusCollection;
String _opusImg;
int _opusStatus;
int _opusType;
int _opusOriginal;
int _opusJurisdiction;
int _opusIsEdit;
CollectionOpusListEntityResult(
{int opusId,
int userId,
String opusTitle,
String opusIntroduce,
String opusTime,
int opusSatisfied,
int opusSee,
int opusFollow,
int opusCollection,
String opusImg,
int opusStatus,
int opusType,
int opusOriginal,
int opusJurisdiction,
int opusIsEdit}) {
this._opusId = opusId;
this._userId = userId;
this._opusTitle = opusTitle;
this._opusIntroduce = opusIntroduce;
this._opusTime = opusTime;
this._opusSatisfied = opusSatisfied;
this._opusSee = opusSee;
this._opusFollow = opusFollow;
this._opusCollection = opusCollection;
this._opusImg = opusImg;
this._opusStatus = opusStatus;
this._opusType = opusType;
this._opusOriginal = opusOriginal;
this._opusJurisdiction = opusJurisdiction;
this._opusIsEdit = opusIsEdit;
}
int get opusId => _opusId;
set opusId(int opusId) => _opusId = opusId;
int get userId => _userId;
set userId(int userId) => _userId = userId;
String get opusTitle => _opusTitle;
set opusTitle(String opusTitle) => _opusTitle = opusTitle;
String get opusIntroduce => _opusIntroduce;
set opusIntroduce(String opusIntroduce) => _opusIntroduce = opusIntroduce;
String get opusTime => _opusTime;
set opusTime(String opusTime) => _opusTime = opusTime;
int get opusSatisfied => _opusSatisfied;
set opusSatisfied(int opusSatisfied) => _opusSatisfied = opusSatisfied;
int get opusSee => _opusSee;
set opusSee(int opusSee) => _opusSee = opusSee;
int get opusFollow => _opusFollow;
set opusFollow(int opusFollow) => _opusFollow = opusFollow;
int get opusCollection => _opusCollection;
set opusCollection(int opusCollection) => _opusCollection = opusCollection;
String get opusImg => _opusImg;
set opusImg(String opusImg) => _opusImg = opusImg;
int get opusStatus => _opusStatus;
set opusStatus(int opusStatus) => _opusStatus = opusStatus;
int get opusType => _opusType;
set opusType(int opusType) => _opusType = opusType;
int get opusOriginal => _opusOriginal;
set opusOriginal(int opusOriginal) => _opusOriginal = opusOriginal;
int get opusJurisdiction => _opusJurisdiction;
set opusJurisdiction(int opusJurisdiction) =>
_opusJurisdiction = opusJurisdiction;
int get opusIsEdit => _opusIsEdit;
set opusIsEdit(int opusIsEdit) => _opusIsEdit = opusIsEdit;
CollectionOpusListEntityResult.fromJson(Map<String, dynamic> json) {
_opusId = json['opus_id'];
_userId = json['user_id'];
_opusTitle = json['opus_title'];
_opusIntroduce = json['opus_introduce'];
_opusTime = json['opus_time'];
_opusSatisfied = json['opus_satisfied'];
_opusSee = json['opus_see'];
_opusFollow = json['opus_follow'];
_opusCollection = json['opus_collection'];
_opusImg = json['opus_img'];
_opusStatus = json['opus_status'];
_opusType = json['opus_type'];
_opusOriginal = json['opus_original'];
_opusJurisdiction = json['opus_jurisdiction'];
_opusIsEdit = json['opus_is_edit'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['opus_id'] = this._opusId;
data['user_id'] = this._userId;
data['opus_title'] = this._opusTitle;
data['opus_introduce'] = this._opusIntroduce;
data['opus_time'] = this._opusTime;
data['opus_satisfied'] = this._opusSatisfied;
data['opus_see'] = this._opusSee;
data['opus_follow'] = this._opusFollow;
data['opus_collection'] = this._opusCollection;
data['opus_img'] = this._opusImg;
data['opus_status'] = this._opusStatus;
data['opus_type'] = this._opusType;
data['opus_original'] = this._opusOriginal;
data['opus_jurisdiction'] = this._opusJurisdiction;
data['opus_is_edit'] = this._opusIsEdit;
return data;
}
}

Some files were not shown because too many files have changed in this diff Show More