init pikapika

This commit is contained in:
niuhuan 2021-11-11 11:00:38 +08:00
parent e9e875a4da
commit d2b2265900
91 changed files with 357 additions and 328 deletions

View File

@ -1,13 +1,13 @@
PIKAPI - 漫画客户端
PIKAPIKA - 漫画客户端
========
[![license](https://img.shields.io/github/license/niuhuan/pikapi)](https://raw.githubusercontent.com/niuhuan/pikapi/master/LICENSE)
[![releases](https://img.shields.io/github/v/release/niuhuan/pikapi)](https://github.com/niuhuan/pikapi/releases)
[![downloads](https://img.shields.io/github/downloads/niuhuan/pikapi/total)](https://github.com/niuhuan/pikapi/releases)
[![license](https://img.shields.io/github/license/niuhuan/pikapika)](https://raw.githubusercontent.com/niuhuan/pikapika/master/LICENSE)
[![releases](https://img.shields.io/github/v/release/niuhuan/pikapika)](https://github.com/niuhuan/pikapika/releases)
[![downloads](https://img.shields.io/github/downloads/niuhuan/pikapika/total)](https://github.com/niuhuan/pikapika/releases)
- 美观易用且无广告的漫画客户端, 能运行在Windows/MacOS/Linux/Android/IOS中。
- 本仓库仅作为学习交流使用, 请您遵守当地法律法规以及开源协议。
- 您的star和issue是对开发者的莫大鼓励, 可以源仓库下载最新的源码/安装包, 表示支持/提出建议。
- 源仓库地址 [https://github.com/niuhuan/pikapi](https://github.com/niuhuan/pikapi)
- 源仓库地址 [https://github.com/niuhuan/pikapika](https://github.com/niuhuan/pikapika)
## 界面 / 功能
@ -59,8 +59,8 @@ VPN->代理->分流, 这三个功能如果同时设置, 您会在您手机的VPN
- 在ios/android环境 数据文件将会保存在程序自身数据目录中, 删除就会清理
- 在 windows 数据文件将会保存在程序同一目录
- 在 macos 数据文件将会"~/Library/Application Support/pikapi"
- 在 linux 数据文件将会"~/.pikapi"
- 在 macos 数据文件将会"~/Library/Application Support/pikapika"
- 在 linux 数据文件将会"~/.pikapika"
## 运行 / 构建

View File

@ -1,5 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="niuhuan.pikapi">
package="niuhuan.pikapika">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->

View File

@ -1,5 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="niuhuan.pikapi">
package="niuhuan.pikapika">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
@ -14,7 +14,7 @@
android:requestLegacyExternalStorage="true">
<!-- requestLegacyExternalStorage="true" api29 down -->
<activity
android:name=".MainActivity"
android:name="niuhuan.pikapika.MainActivity"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:launchMode="singleTop"

View File

@ -1,9 +1,8 @@
package niuhuan.pikapi
package niuhuan.pikapika
import android.content.ContentValues
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.Matrix
import android.os.Build
import android.os.Environment
import android.os.Handler
@ -29,10 +28,7 @@ import java.io.ByteArrayOutputStream
import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.lang.IllegalStateException
import java.nio.file.CopyOption
import java.nio.file.Files
import java.nio.file.StandardCopyOption
import java.util.concurrent.Executors
class MainActivity : FlutterActivity() {

View File

@ -1,5 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="niuhuan.pikapi">
package="niuhuan.pikapika">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->

View File

@ -7,7 +7,7 @@ import (
"path"
path2 "path"
"path/filepath"
"pikapi/main/config"
"pikapika/main/config"
"runtime"
"strings"
)
@ -35,11 +35,11 @@ func init() {
if i < 0 {
panic(errors.New(" can't find \"/\" or \"\\\""))
}
applicationDir = path2.Join(path[0:i+1], "data", "pikapi")
applicationDir = path2.Join(path[0:i+1], "data")
case "darwin":
applicationDir = path.Join(applicationDir, "Library", "Application Support", "pikapi")
applicationDir = path.Join(applicationDir, "Library", "Application Support", "pikapika")
case "linux":
applicationDir = path.Join(applicationDir, ".pikapi")
applicationDir = path.Join(applicationDir, ".pikapika")
default:
panic(errors.New("not supported system"))
}

View File

@ -10,7 +10,7 @@ import (
_ "image/png"
"os"
"path/filepath"
"pikapi/main/database/properties"
"pikapika/main/database/properties"
"strconv"
"strings"
)

View File

@ -7,14 +7,14 @@ import (
"github.com/go-flutter-desktop/plugins/url_launcher"
"github.com/go-gl/glfw/v3.3/glfw"
"github.com/miguelpruivo/flutter_file_picker/go"
"pikapi/main/controller"
"pikapi/main/database/properties"
"pikapika/main/controller"
"pikapika/main/database/properties"
"strconv"
"sync"
)
var options = []flutter.Option{
flutter.AddPlugin(&Plugin{}),
flutter.AddPlugin(&PikapikaPlugin{}),
flutter.AddPlugin(&file_picker.FilePickerPlugin{}),
flutter.AddPlugin(&url_launcher.UrlLauncherPlugin{}),
}
@ -39,10 +39,10 @@ func (s *EventHandler) OnCancel(arguments interface{}) {
const channelName = "method"
type Plugin struct {
type PikapikaPlugin struct {
}
func (p *Plugin) InitPlugin(messenger plugin.BinaryMessenger) error {
func (p *PikapikaPlugin) InitPlugin(messenger plugin.BinaryMessenger) error {
channel := plugin.NewMethodChannel(messenger, channelName, plugin.StandardMethodCodec{})
@ -72,7 +72,7 @@ func (p *Plugin) InitPlugin(messenger plugin.BinaryMessenger) error {
return nil // no error
}
func (p *Plugin) InitPluginGLFW(window *glfw.Window) error {
func (p *PikapikaPlugin) InitPluginGLFW(window *glfw.Window) error {
window.SetSizeCallback(func(w *glfw.Window, width int, height int) {
go func() {
properties.SaveProperty("window_width", strconv.Itoa(width))

View File

@ -1,4 +1,4 @@
module pikapi
module pikapika
go 1.16

View File

@ -1,7 +1,7 @@
#application-name: "pikapi" # Uncomment to modify this value.
#executable-name: "pikapi" # Uncomment to modify this value. Only lowercase a-z, numbers, underscores and no spaces
#package-name: "pikapi" # Uncomment to modify this value. Only lowercase a-z, numbers and no underscores or spaces
organization-name: "com.pikapi"
organization-name: "niuhuan"
license: "" # MANDATORY: Fill in your SPDX license name: https://spdx.org/licenses
target: lib/main_desktop.dart
# opengl: "none" # Uncomment this line if you have trouble with your OpenGL driver (https://github.com/go-flutter-desktop/go-flutter/issues/272)

View File

@ -2,11 +2,11 @@ package config
import (
"path"
"pikapi/main/controller"
"pikapi/main/database/comic_center"
"pikapi/main/database/network_cache"
"pikapi/main/database/properties"
"pikapi/main/utils"
"pikapika/main/controller"
"pikapika/main/database/comic_center"
"pikapika/main/database/network_cache"
"pikapika/main/database/properties"
"pikapika/main/utils"
)
// InitApplication 由不同的平台直接调用, 根据提供的路径初始化数据库, 资料文件夹

View File

@ -9,9 +9,9 @@ import (
"net"
"net/http"
"net/url"
"pikapi/main/database/comic_center"
"pikapi/main/database/network_cache"
"pikapi/main/database/properties"
"pikapika/main/database/comic_center"
"pikapika/main/database/network_cache"
"pikapika/main/database/properties"
"regexp"
"time"
)

View File

@ -2,7 +2,7 @@ package controller
import (
"encoding/json"
"pikapi/main/database/comic_center"
"pikapika/main/database/comic_center"
)
// EventNotify EventChannel 总线

View File

@ -8,8 +8,8 @@ import (
"os"
"path"
"path/filepath"
"pikapi/main/database/comic_center"
"pikapi/main/utils"
"pikapika/main/database/comic_center"
"pikapika/main/utils"
"sync"
"time"
)

View File

@ -12,8 +12,8 @@ import (
"net"
"os"
"path"
"pikapi/main/database/comic_center"
"pikapi/main/utils"
"pikapika/main/database/comic_center"
"pikapika/main/utils"
"time"
)

View File

@ -10,7 +10,7 @@ import (
_ "image/png"
"io/ioutil"
"net/http"
"pikapi/main/database/comic_center"
"pikapika/main/database/comic_center"
"sync"
)

View File

@ -11,8 +11,8 @@ import (
"net"
"os"
path2 "path"
"pikapi/main/database/comic_center"
"pikapi/main/utils"
"pikapika/main/database/comic_center"
"pikapika/main/utils"
"strconv"
"strings"
)

View File

@ -1,6 +1,6 @@
package controller
import "pikapi/main/database/comic_center"
import "pikapika/main/database/comic_center"
type DisplayImageData struct {
FileSize int64 `json:"fileSize"`

View File

@ -10,10 +10,10 @@ import (
"io/ioutil"
"os"
path2 "path"
"pikapi/main/database/comic_center"
"pikapi/main/database/network_cache"
"pikapi/main/database/properties"
"pikapi/main/utils"
"pikapika/main/database/comic_center"
"pikapika/main/database/network_cache"
"pikapika/main/database/properties"
"pikapika/main/utils"
"strconv"
"time"
)
@ -513,6 +513,19 @@ func convertImageToJPEG100(params string) error {
return jpeg.Encode(stream, i, &jpeg.Options{Quality: 100})
}
func httpGet(url string) (string, error) {
rsp, err := client.Get(url)
if err != nil {
return "", err
}
defer rsp.Body.Close()
buff, err := ioutil.ReadAll(rsp.Body)
if err != nil {
return "", err
}
return string(buff), nil
}
func FlatInvoke(method string, params string) (string, error) {
switch method {
case "saveProperty":
@ -684,6 +697,8 @@ func FlatInvoke(method string, params string) (string, error) {
return strconv.Itoa(loadDownloadThreadCount()), nil
case "switchLikeComment":
return switchLikeComment(params)
case "httpGet":
return httpGet(params)
}
return "", errors.New("method not found : " + method)
}

View File

@ -5,7 +5,7 @@ import (
"gorm.io/gorm"
"gorm.io/gorm/clause"
"path"
"pikapi/main/utils"
"pikapika/main/utils"
"sync"
"time"
)

View File

@ -6,7 +6,7 @@ import (
"gorm.io/gorm"
"gorm.io/gorm/clause"
"path"
"pikapi/main/utils"
"pikapika/main/utils"
"sync"
"time"
)

View File

@ -6,7 +6,7 @@ import (
"gorm.io/gorm"
"gorm.io/gorm/clause"
"path"
"pikapi/main/utils"
"pikapika/main/utils"
"strconv"
"sync"
)

View File

@ -1 +1 @@
gomobile bind -target=ios -o lib/Pikapi.xcframework ./
gomobile bind -target=ios -o lib/Mobile.xcframework ./

View File

@ -1,8 +1,8 @@
package mobile
import (
"pikapi/main/config"
"pikapi/main/controller"
"pikapika/main/config"
"pikapika/main/controller"
)
func InitApplication(application string) {

View File

@ -14,7 +14,7 @@
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
DDE03DA827193C22000ABF7B /* Pikapi.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = DDE03DA727193C22000ABF7B /* Pikapi.xcframework */; };
DD1F548D273CB9A900B04493 /* Mobile.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD1F548C273CB9A900B04493 /* Mobile.xcframework */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
@ -48,7 +48,7 @@
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
CA7EB5DA1FDE22BAC5B01D77 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
DDE03DA727193C22000ABF7B /* Pikapi.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Pikapi.xcframework; path = ../go/mobile/lib/Pikapi.xcframework; sourceTree = "<group>"; };
DD1F548C273CB9A900B04493 /* Mobile.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Mobile.xcframework; path = ../go/mobile/lib/Mobile.xcframework; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -56,8 +56,8 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
DDE03DA827193C22000ABF7B /* Pikapi.xcframework in Frameworks */,
0E44DEFD92B805627806403C /* Pods_Runner.framework in Frameworks */,
DD1F548D273CB9A900B04493 /* Mobile.xcframework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -88,7 +88,7 @@
97C146E51CF9000F007C117D = {
isa = PBXGroup;
children = (
DDE03DA727193C22000ABF7B /* Pikapi.xcframework */,
DD1F548C273CB9A900B04493 /* Mobile.xcframework */,
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
@ -366,7 +366,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = niuhuan.pikapi;
PRODUCT_BUNDLE_IDENTIFIER = niuhuan.pikapika;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
@ -496,7 +496,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = niuhuan.pikapi;
PRODUCT_BUNDLE_IDENTIFIER = niuhuan.pikapika;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@ -518,7 +518,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = niuhuan.pikapi;
PRODUCT_BUNDLE_IDENTIFIER = niuhuan.pikapika;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;

View File

@ -1,6 +1,6 @@
import UIKit
import Flutter
import Pikapi
import Mobile
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {

View File

@ -2,8 +2,6 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPhotoLibraryUsageDescription</key>
<string>Save images</string>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
@ -13,7 +11,7 @@
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>pikapi</string>
<string>pikapika</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
@ -24,6 +22,8 @@
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSPhotoLibraryUsageDescription</key>
<string>Save images</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>

View File

@ -5,8 +5,8 @@ import 'package:clipboard/clipboard.dart';
import 'package:filesystem_picker/filesystem_picker.dart';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/config/Platform.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/config/Platform.dart';
import 'package:url_launcher/url_launcher.dart';
import 'Method.dart';
import 'config/ChooserRoot.dart';

View File

@ -2,8 +2,8 @@ import 'dart:convert';
import 'dart:typed_data';
import 'package:flutter/services.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/config/Quality.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/config/Quality.dart';
/// 使MethodChannel与平台通信
@ -670,4 +670,10 @@ class Method {
Future<Uint8List> convertToPNG(String path) async {
return await _channel.invokeMethod("convertToPNG", {"path": path});
}
/// HTTP-GET-STRING
Future<String> httpGet(String url) async {
return await _flatInvoke("httpGet", url);
}
}

View File

@ -3,7 +3,7 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Method.dart';
import '../Common.dart';

View File

@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Method.dart';
const _autoCleanMap = {

View File

@ -4,8 +4,8 @@ import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/Cross.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/Cross.dart';
import '../Method.dart';

View File

@ -2,8 +2,8 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/Method.dart';
late int _downloadThreadCount;
const _values = [1, 2, 3, 4, 5];

View File

@ -4,7 +4,7 @@ import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Method.dart';
import '../Common.dart';

View File

@ -1,7 +1,7 @@
///
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Method.dart';
enum ReaderDirection {
TOP_TO_BOTTOM,

View File

@ -3,7 +3,7 @@
import 'package:event/event.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapika/basic/Common.dart';
import '../Method.dart';
import 'Platform.dart';

View File

@ -1,10 +1,15 @@
import 'dart:async' show Future;
import 'package:flutter/services.dart' show rootBundle;
import '../Method.dart';
const _versionUrl =
"https://api.github.com/repos/niuhuan/pikapi-flutter/releases/latest";
const _versionAssets = 'lib/assets/version.txt';
RegExp _versionExp = RegExp(r"^v\d+\.\d+.\d+$");
late String _version;
var _latestVersion = "";
Future initVersion() async {
try {
@ -14,10 +19,17 @@ Future initVersion() async {
}
}
Future versionCheck() async {
Future autoCheckNewVersion() async {}
Future _versionCheck() async {
if (_versionExp.hasMatch(_version)) {
// exception
String latestVersion = (await method.httpGet(_versionUrl)).trim();
if (latestVersion != _version) {
// new Version
}
} else {
// dirtyVersion
}
// String latestVersion = (await method.httpGet(_versionAddress)).trim();
//
}

View File

@ -1,7 +1,7 @@
import 'package:event/event.dart';
import 'package:flutter/material.dart';
import 'package:pikapi/screens/InitScreen.dart';
import 'package:pikapi/basic/Navigatior.dart';
import 'package:pikapika/screens/InitScreen.dart';
import 'package:pikapika/basic/Navigatior.dart';
import 'basic/config/Themes.dart';

View File

@ -1,11 +1,11 @@
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/config/Themes.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapi/basic/enum/ErrorTypes.dart';
import 'package:pikapi/screens/RegisterScreen.dart';
import 'package:pikapi/screens/components/NetworkSetting.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/config/Themes.dart';
import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/basic/enum/ErrorTypes.dart';
import 'package:pikapika/screens/RegisterScreen.dart';
import 'package:pikapika/screens/components/NetworkSetting.dart';
import 'AppScreen.dart';
import 'DownloadListScreen.dart';

View File

@ -1,13 +1,13 @@
import 'package:event/event.dart';
import 'package:flutter/material.dart';
import 'package:flutter_search_bar/flutter_search_bar.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/store/Categories.dart';
import 'package:pikapi/basic/config/ShadowCategories.dart';
import 'package:pikapi/screens/RankingsScreen.dart';
import 'package:pikapi/screens/SearchScreen.dart';
import 'package:pikapi/screens/components/ContentError.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/store/Categories.dart';
import 'package:pikapika/basic/config/ShadowCategories.dart';
import 'package:pikapika/screens/RankingsScreen.dart';
import 'package:pikapika/screens/SearchScreen.dart';
import 'package:pikapika/screens/components/ContentError.dart';
import 'package:pikapika/basic/Method.dart';
import 'ComicsScreen.dart';
import 'GamesScreen.dart';
import 'RandomComicsScreen.dart';

View File

@ -1,9 +1,9 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Channels.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapi/screens/components/FitButton.dart';
import 'package:pikapika/basic/Channels.dart';
import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/screens/components/FitButton.dart';
import 'components/ContentLoading.dart';
//

View File

@ -1,13 +1,13 @@
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/Cross.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/screens/ComicsScreen.dart';
import 'package:pikapi/basic/Navigatior.dart';
import 'package:pikapi/screens/components/CommentMainType.dart';
import 'package:pikapi/screens/components/ItemBuilder.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/Cross.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/screens/ComicsScreen.dart';
import 'package:pikapika/basic/Navigatior.dart';
import 'package:pikapika/screens/components/CommentMainType.dart';
import 'package:pikapika/screens/components/ItemBuilder.dart';
import 'package:pikapika/basic/Method.dart';
import 'ComicReaderScreen.dart';
import 'DownloadConfirmScreen.dart';
import 'components/CommentList.dart';

View File

@ -2,14 +2,14 @@ import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapi/basic/config/AutoFullScreen.dart';
import 'package:pikapi/basic/config/FullScreenUI.dart';
import 'package:pikapi/basic/config/Quality.dart';
import 'package:pikapi/basic/config/ReaderDirection.dart';
import 'package:pikapi/basic/config/ReaderType.dart';
import 'package:pikapi/screens/components/ContentBuilder.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/basic/config/AutoFullScreen.dart';
import 'package:pikapika/basic/config/FullScreenUI.dart';
import 'package:pikapika/basic/config/Quality.dart';
import 'package:pikapika/basic/config/ReaderDirection.dart';
import 'package:pikapika/basic/config/ReaderType.dart';
import 'package:pikapika/screens/components/ContentBuilder.dart';
import 'components/ImageReader.dart';
// 线

View File

@ -1,10 +1,10 @@
import 'package:flutter/material.dart';
import 'package:flutter_search_bar/flutter_search_bar.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/config/ShadowCategories.dart';
import 'package:pikapi/basic/store/Categories.dart';
import 'package:pikapi/basic/config/ListLayout.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/config/ShadowCategories.dart';
import 'package:pikapika/basic/store/Categories.dart';
import 'package:pikapika/basic/config/ListLayout.dart';
import 'package:pikapika/basic/Method.dart';
import '../basic/Entities.dart';
import 'SearchScreen.dart';
import 'components/ComicPager.dart';

View File

@ -1,11 +1,11 @@
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/Entities.dart' as e;
import 'package:pikapi/basic/Method.dart';
import 'package:pikapi/screens/components/CommentItem.dart';
import 'package:pikapi/screens/components/CommentMainType.dart';
import 'package:pikapi/screens/components/ContentBuilder.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Entities.dart' as e;
import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/screens/components/CommentItem.dart';
import 'package:pikapika/screens/components/CommentMainType.dart';
import 'package:pikapika/screens/components/ContentBuilder.dart';
class _CommentChildPage extends e.Page {
late List<ChildOfComment> docs;

View File

@ -1,10 +1,10 @@
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/screens/components/ContentLoading.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/screens/components/ContentLoading.dart';
import 'package:pikapika/basic/Method.dart';
import 'components/ComicInfoCard.dart';

View File

@ -3,12 +3,12 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:pikapi/basic/Channels.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/Cross.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapi/screens/DownloadExportToSocketScreen.dart';
import 'package:pikapika/basic/Channels.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/Cross.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/screens/DownloadExportToSocketScreen.dart';
import 'components/ContentError.dart';
import 'components/ContentLoading.dart';

View File

@ -1,9 +1,9 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Channels.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Channels.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Method.dart';
import 'components/ContentError.dart';
import 'components/ContentLoading.dart';

View File

@ -4,10 +4,10 @@ import 'dart:io';
import 'package:filesystem_picker/filesystem_picker.dart';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:pikapi/basic/Channels.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapi/basic/config/ChooserRoot.dart';
import 'package:pikapika/basic/Channels.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/basic/config/ChooserRoot.dart';
import 'components/ContentLoading.dart';

View File

@ -1,9 +1,9 @@
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/Navigatior.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Navigatior.dart';
import 'package:pikapika/basic/Method.dart';
import 'ComicInfoScreen.dart';
import 'DownloadExportToFileScreen.dart';
import 'DownloadReaderScreen.dart';

View File

@ -2,10 +2,10 @@ import 'dart:async';
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Channels.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Channels.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Method.dart';
import 'DownloadImportScreen.dart';
import 'DownloadInfoScreen.dart';
import 'components/ContentLoading.dart';

View File

@ -2,13 +2,13 @@ import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/config/AutoFullScreen.dart';
import 'package:pikapi/basic/config/FullScreenUI.dart';
import 'package:pikapi/basic/config/ReaderDirection.dart';
import 'package:pikapi/basic/config/ReaderType.dart';
import 'package:pikapi/screens/components/ContentBuilder.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/config/AutoFullScreen.dart';
import 'package:pikapika/basic/config/FullScreenUI.dart';
import 'package:pikapika/basic/config/ReaderDirection.dart';
import 'package:pikapika/basic/config/ReaderType.dart';
import 'package:pikapika/screens/components/ContentBuilder.dart';
import 'package:pikapika/basic/Method.dart';
import 'components/ImageReader.dart';
//

View File

@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Method.dart';
import '../basic/Entities.dart';
import 'components/ComicPager.dart';

View File

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:photo_view/photo_view.dart';
import 'package:pikapi/basic/Cross.dart';
import 'package:pikapi/screens/components/Images.dart';
import 'package:pikapika/basic/Cross.dart';
import 'package:pikapika/screens/components/Images.dart';
//
class FilePhotoViewScreen extends StatelessWidget {

View File

@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Cross.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapi/screens/components/ItemBuilder.dart';
import 'package:pikapika/basic/Cross.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/screens/components/ItemBuilder.dart';
import 'components/GameTitleCard.dart';

View File

@ -1,11 +1,11 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapi/screens/components/CommentMainType.dart';
import 'package:pikapi/screens/components/ContentError.dart';
import 'package:pikapi/screens/components/ContentLoading.dart';
import 'package:pikapi/screens/components/Images.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/screens/components/CommentMainType.dart';
import 'package:pikapika/screens/components/ContentError.dart';
import 'package:pikapika/screens/components/ContentLoading.dart';
import 'package:pikapika/screens/components/Images.dart';
import 'GameDownloadScreen.dart';
import 'components/CommentList.dart';

View File

@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapi/screens/components/ContentBuilder.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/screens/components/ContentBuilder.dart';
import 'GameInfoScreen.dart';
import 'components/Images.dart';

View File

@ -1,30 +1,30 @@
import 'package:flutter/material.dart';
import 'package:pikapi/basic/config/Address.dart';
import 'package:pikapi/basic/config/AndroidDisplayMode.dart';
import 'package:pikapi/basic/config/AndroidSecureFlag.dart';
import 'package:pikapi/basic/config/AutoClean.dart';
import 'package:pikapi/basic/config/AutoFullScreen.dart';
import 'package:pikapi/basic/config/ChooserRoot.dart';
import 'package:pikapi/basic/config/ContentFailedReloadAction.dart';
import 'package:pikapi/basic/config/ConvertToPNG.dart';
import 'package:pikapi/basic/config/DownloadAndExportPath.dart';
import 'package:pikapi/basic/config/DownloadThreadCount.dart';
import 'package:pikapi/basic/config/FullScreenAction.dart';
import 'package:pikapi/basic/config/FullScreenUI.dart';
import 'package:pikapi/basic/config/KeyboardController.dart';
import 'package:pikapi/basic/config/PagerAction.dart';
import 'package:pikapi/basic/config/Platform.dart';
import 'package:pikapi/basic/config/Proxy.dart';
import 'package:pikapi/basic/config/Quality.dart';
import 'package:pikapi/basic/config/ReaderDirection.dart';
import 'package:pikapi/basic/config/ReaderType.dart';
import 'package:pikapi/basic/config/ShadowCategories.dart';
import 'package:pikapi/basic/config/Themes.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapi/basic/config/ListLayout.dart';
import 'package:pikapi/basic/config/TimeOffsetHour.dart';
import 'package:pikapi/basic/config/Version.dart';
import 'package:pikapi/basic/config/VolumeController.dart';
import 'package:pikapika/basic/config/Address.dart';
import 'package:pikapika/basic/config/AndroidDisplayMode.dart';
import 'package:pikapika/basic/config/AndroidSecureFlag.dart';
import 'package:pikapika/basic/config/AutoClean.dart';
import 'package:pikapika/basic/config/AutoFullScreen.dart';
import 'package:pikapika/basic/config/ChooserRoot.dart';
import 'package:pikapika/basic/config/ContentFailedReloadAction.dart';
import 'package:pikapika/basic/config/ConvertToPNG.dart';
import 'package:pikapika/basic/config/DownloadAndExportPath.dart';
import 'package:pikapika/basic/config/DownloadThreadCount.dart';
import 'package:pikapika/basic/config/FullScreenAction.dart';
import 'package:pikapika/basic/config/FullScreenUI.dart';
import 'package:pikapika/basic/config/KeyboardController.dart';
import 'package:pikapika/basic/config/PagerAction.dart';
import 'package:pikapika/basic/config/Platform.dart';
import 'package:pikapika/basic/config/Proxy.dart';
import 'package:pikapika/basic/config/Quality.dart';
import 'package:pikapika/basic/config/ReaderDirection.dart';
import 'package:pikapika/basic/config/ReaderType.dart';
import 'package:pikapika/basic/config/ShadowCategories.dart';
import 'package:pikapika/basic/config/Themes.dart';
import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/basic/config/ListLayout.dart';
import 'package:pikapika/basic/config/TimeOffsetHour.dart';
import 'package:pikapika/basic/config/Version.dart';
import 'package:pikapika/basic/config/VolumeController.dart';
import 'AccountScreen.dart';
import 'AppScreen.dart';
@ -71,6 +71,7 @@ class _InitScreenState extends State<InitScreen> {
await initDownloadThreadCount();
await initConvertToPNG();
await initVersion();
await autoCheckNewVersion();
// , token失效重新登录, 1
if (await method.preLogin()) {
// token或username+password有效则直接进入登录好的界面

View File

@ -1,10 +1,10 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapi/screens/components/ContentBuilder.dart';
import 'package:pikapi/screens/components/ContentLoading.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/screens/components/ContentBuilder.dart';
import 'package:pikapika/screens/components/ContentLoading.dart';
//
class MigrateScreen extends StatefulWidget {

View File

@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:pikapi/screens/components/NetworkSetting.dart';
import 'package:pikapika/screens/components/NetworkSetting.dart';
class NetworkSettingsScreen extends StatelessWidget {
@override

View File

@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapi/basic/config/ListLayout.dart';
import 'package:pikapi/basic/config/ShadowCategories.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/basic/config/ListLayout.dart';
import 'package:pikapika/basic/config/ShadowCategories.dart';
import 'components/ComicListBuilder.dart';

View File

@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapi/basic/config/ListLayout.dart';
import 'package:pikapi/basic/config/ShadowCategories.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/basic/config/ListLayout.dart';
import 'package:pikapika/basic/config/ShadowCategories.dart';
import 'components/ComicListBuilder.dart';

View File

@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:flutter_datetime_picker/flutter_datetime_picker.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapi/screens/components/NetworkSetting.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/screens/components/NetworkSetting.dart';
import 'components/ContentLoading.dart';

View File

@ -1,10 +1,10 @@
import 'package:flutter/material.dart';
import 'package:flutter_search_bar/flutter_search_bar.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/config/ShadowCategories.dart';
import 'package:pikapi/basic/store/Categories.dart';
import 'package:pikapi/basic/config/ListLayout.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/config/ShadowCategories.dart';
import 'package:pikapika/basic/store/Categories.dart';
import 'package:pikapika/basic/config/ListLayout.dart';
import 'package:pikapika/basic/Method.dart';
import '../basic/Entities.dart';
import 'components/ComicPager.dart';

View File

@ -2,28 +2,28 @@ import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/config/AndroidDisplayMode.dart';
import 'package:pikapi/basic/config/AndroidSecureFlag.dart';
import 'package:pikapi/basic/config/AutoClean.dart';
import 'package:pikapi/basic/config/AutoFullScreen.dart';
import 'package:pikapi/basic/config/ChooserRoot.dart';
import 'package:pikapi/basic/config/ContentFailedReloadAction.dart';
import 'package:pikapi/basic/config/ConvertToPNG.dart';
import 'package:pikapi/basic/config/DownloadAndExportPath.dart';
import 'package:pikapi/basic/config/DownloadThreadCount.dart';
import 'package:pikapi/basic/config/FullScreenAction.dart';
import 'package:pikapi/basic/config/FullScreenUI.dart';
import 'package:pikapi/basic/config/KeyboardController.dart';
import 'package:pikapi/basic/config/PagerAction.dart';
import 'package:pikapi/basic/config/ReaderDirection.dart';
import 'package:pikapi/basic/config/ReaderType.dart';
import 'package:pikapi/basic/config/Quality.dart';
import 'package:pikapi/basic/config/ShadowCategories.dart';
import 'package:pikapi/basic/config/Themes.dart';
import 'package:pikapi/basic/config/TimeOffsetHour.dart';
import 'package:pikapi/basic/config/VolumeController.dart';
import 'package:pikapi/screens/components/NetworkSetting.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/config/AndroidDisplayMode.dart';
import 'package:pikapika/basic/config/AndroidSecureFlag.dart';
import 'package:pikapika/basic/config/AutoClean.dart';
import 'package:pikapika/basic/config/AutoFullScreen.dart';
import 'package:pikapika/basic/config/ChooserRoot.dart';
import 'package:pikapika/basic/config/ContentFailedReloadAction.dart';
import 'package:pikapika/basic/config/ConvertToPNG.dart';
import 'package:pikapika/basic/config/DownloadAndExportPath.dart';
import 'package:pikapika/basic/config/DownloadThreadCount.dart';
import 'package:pikapika/basic/config/FullScreenAction.dart';
import 'package:pikapika/basic/config/FullScreenUI.dart';
import 'package:pikapika/basic/config/KeyboardController.dart';
import 'package:pikapika/basic/config/PagerAction.dart';
import 'package:pikapika/basic/config/ReaderDirection.dart';
import 'package:pikapika/basic/config/ReaderType.dart';
import 'package:pikapika/basic/config/Quality.dart';
import 'package:pikapika/basic/config/ShadowCategories.dart';
import 'package:pikapika/basic/config/Themes.dart';
import 'package:pikapika/basic/config/TimeOffsetHour.dart';
import 'package:pikapika/basic/config/VolumeController.dart';
import 'package:pikapika/screens/components/NetworkSetting.dart';
import 'CleanScreen.dart';
import 'MigrateScreen.dart';

View File

@ -1,12 +1,12 @@
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/config/Themes.dart';
import 'package:pikapi/screens/AboutScreen.dart';
import 'package:pikapi/screens/AccountScreen.dart';
import 'package:pikapi/screens/DownloadListScreen.dart';
import 'package:pikapi/screens/FavouritePaperScreen.dart';
import 'package:pikapi/screens/ViewLogsScreen.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/config/Themes.dart';
import 'package:pikapika/screens/AboutScreen.dart';
import 'package:pikapika/screens/AccountScreen.dart';
import 'package:pikapika/screens/DownloadListScreen.dart';
import 'package:pikapika/screens/FavouritePaperScreen.dart';
import 'package:pikapika/screens/ViewLogsScreen.dart';
import 'package:pikapika/basic/Method.dart';
import 'SettingsScreen.dart';
import 'components/UserProfileCard.dart';

View File

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/Method.dart';
import 'ComicInfoScreen.dart';
import 'components/Images.dart';

View File

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Method.dart';
import '../FilePhotoViewScreen.dart';
import 'Images.dart';

View File

@ -1,10 +1,10 @@
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Cross.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapi/screens/SearchScreen.dart';
import 'package:pikapi/basic/Navigatior.dart';
import 'package:pikapika/basic/Cross.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/screens/SearchScreen.dart';
import 'package:pikapika/basic/Navigatior.dart';
import '../ComicsScreen.dart';
import 'Images.dart';

View File

@ -1,9 +1,9 @@
import 'package:event/event.dart';
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/config/ShadowCategories.dart';
import 'package:pikapi/basic/config/ListLayout.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/config/ShadowCategories.dart';
import 'package:pikapika/basic/config/ListLayout.dart';
import 'ComicInfoCard.dart';
import 'Images.dart';

View File

@ -1,9 +1,9 @@
import 'package:event/event.dart';
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/config/ShadowCategories.dart';
import 'package:pikapi/screens/components/ComicList.dart';
import 'package:pikapi/screens/components/FitButton.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/config/ShadowCategories.dart';
import 'package:pikapika/screens/components/ComicList.dart';
import 'package:pikapika/screens/components/FitButton.dart';
import 'ContentBuilder.dart';
class ComicListBuilder extends StatefulWidget {

View File

@ -1,13 +1,13 @@
import 'package:event/event.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/config/PagerAction.dart';
import 'package:pikapi/basic/config/ShadowCategories.dart';
import 'package:pikapi/basic/enum/Sort.dart';
import 'package:pikapi/screens/components/ComicList.dart';
import 'package:pikapi/screens/components/ContentError.dart';
import 'package:pikapi/screens/components/FitButton.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/config/PagerAction.dart';
import 'package:pikapika/basic/config/ShadowCategories.dart';
import 'package:pikapika/basic/enum/Sort.dart';
import 'package:pikapika/screens/components/ComicList.dart';
import 'package:pikapika/screens/components/ContentError.dart';
import 'package:pikapika/screens/components/FitButton.dart';
import 'ContentLoading.dart';
//

View File

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:pikapi/screens/ComicsScreen.dart';
import 'package:pikapi/basic/Navigatior.dart';
import 'package:pikapika/screens/ComicsScreen.dart';
import 'package:pikapika/basic/Navigatior.dart';
// tag
class ComicTagsCard extends StatelessWidget {

View File

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Method.dart';
import 'Avatar.dart';
import 'CommentMainType.dart';

View File

@ -1,10 +1,10 @@
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/Entities.dart' as e;
import 'package:pikapi/screens/CommentScreen.dart';
import 'package:pikapi/screens/components/ItemBuilder.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Entities.dart' as e;
import 'package:pikapika/screens/CommentScreen.dart';
import 'package:pikapika/screens/components/ItemBuilder.dart';
import 'package:pikapika/basic/Method.dart';
import 'CommentItem.dart';
import 'CommentMainType.dart';

View File

@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:pikapi/basic/config/ContentFailedReloadAction.dart';
import 'package:pikapika/basic/config/ContentFailedReloadAction.dart';
import 'dart:ui';
import 'package:pikapi/basic/enum/ErrorTypes.dart';
import 'package:pikapika/basic/enum/ErrorTypes.dart';
class ContentError extends StatelessWidget {
final Object? error;

View File

@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapika/basic/Entities.dart';
//
class ContinueReadButton extends StatefulWidget {

View File

@ -1,9 +1,9 @@
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Cross.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/screens/components/Images.dart';
import 'package:pikapika/basic/Cross.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/screens/components/Images.dart';
import 'ComicInfoCard.dart';

View File

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapika/basic/Entities.dart';
import 'Images.dart';

View File

@ -6,15 +6,15 @@ import 'package:event/event.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:photo_view/photo_view_gallery.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/Cross.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapi/basic/config/FullScreenAction.dart';
import 'package:pikapi/basic/config/GalleryPreloadCount.dart';
import 'package:pikapi/basic/config/KeyboardController.dart';
import 'package:pikapi/basic/config/ReaderDirection.dart';
import 'package:pikapi/basic/config/ReaderType.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/Cross.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/basic/config/FullScreenAction.dart';
import 'package:pikapika/basic/config/GalleryPreloadCount.dart';
import 'package:pikapika/basic/config/KeyboardController.dart';
import 'package:pikapika/basic/config/ReaderDirection.dart';
import 'package:pikapika/basic/config/ReaderType.dart';
import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
import '../FilePhotoViewScreen.dart';
import 'gesture_zoom_box.dart';

View File

@ -2,9 +2,9 @@ import 'dart:typed_data';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Method.dart';
import 'package:flutter_svg/svg.dart';
import 'package:pikapi/basic/config/ConvertToPNG.dart';
import 'package:pikapika/basic/config/ConvertToPNG.dart';
import 'dart:io';
import 'dart:ui' as ui show Codec;

View File

@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Navigatior.dart';
import 'package:pikapika/basic/Navigatior.dart';
import '../ComicInfoScreen.dart';

View File

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:pikapi/basic/config/Address.dart';
import 'package:pikapi/basic/config/Proxy.dart';
import 'package:pikapika/basic/config/Address.dart';
import 'package:pikapika/basic/config/Proxy.dart';
//
class NetworkSetting extends StatefulWidget {

View File

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/screens/ComicInfoScreen.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/screens/ComicInfoScreen.dart';
import 'package:pikapika/basic/Method.dart';
import 'ItemBuilder.dart';
import 'Images.dart';

View File

@ -1,12 +1,12 @@
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:pikapi/basic/Common.dart';
import 'package:pikapi/basic/Entities.dart';
import 'package:pikapi/screens/components/ItemBuilder.dart';
import 'package:pikapi/screens/components/Avatar.dart';
import 'package:pikapi/screens/components/Images.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapika/basic/Common.dart';
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/screens/components/ItemBuilder.dart';
import 'package:pikapika/screens/components/Avatar.dart';
import 'package:pikapika/screens/components/Images.dart';
import 'package:pikapika/basic/Method.dart';
//
class UserProfileCard extends StatefulWidget {

View File

@ -1,8 +1,8 @@
cmake_minimum_required(VERSION 3.10)
project(runner LANGUAGES CXX)
set(BINARY_NAME "pikapi")
set(APPLICATION_ID "com.example.pikapi")
set(BINARY_NAME "pikapika")
set(APPLICATION_ID "niuhuan.pikapika")
cmake_policy(SET CMP0063 NEW)

View File

@ -55,7 +55,7 @@
/* Begin PBXFileReference section */
333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; };
33CC10ED2044A3C60003C045 /* pikapi.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = pikapi.app; sourceTree = BUILT_PRODUCTS_DIR; };
33CC10ED2044A3C60003C045 /* pikapika.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = pikapika.app; sourceTree = BUILT_PRODUCTS_DIR; };
33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; };
33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
@ -112,7 +112,7 @@
33CC10EE2044A3C60003C045 /* Products */ = {
isa = PBXGroup;
children = (
33CC10ED2044A3C60003C045 /* pikapi.app */,
33CC10ED2044A3C60003C045 /* pikapika.app */,
);
name = Products;
sourceTree = "<group>";
@ -159,7 +159,6 @@
B0D4B875C41B50DACC24CB89 /* Pods-Runner.release.xcconfig */,
6DDC9F2D722240B8A73326EB /* Pods-Runner.profile.xcconfig */,
);
name = Pods;
path = Pods;
sourceTree = "<group>";
};
@ -193,7 +192,7 @@
);
name = Runner;
productName = Runner;
productReference = 33CC10ED2044A3C60003C045 /* pikapi.app */;
productReference = 33CC10ED2044A3C60003C045 /* pikapika.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */

View File

@ -5,10 +5,10 @@
// 'flutter create' template.
// The application's name. By default this is also the title of the Flutter window.
PRODUCT_NAME = pikapi
PRODUCT_NAME = pikapika
// The application's bundle identifier
PRODUCT_BUNDLE_IDENTIFIER = com.example.pikapi
PRODUCT_BUNDLE_IDENTIFIER = niuhuan
// The copyright displayed in application information
PRODUCT_COPYRIGHT = Copyright © 2021 com.example. All rights reserved.

View File

@ -1,4 +1,4 @@
name: pikapi
name: pikapika
description: A cross platform comic client.
# The following line prevents the package from being accidentally published to

View File

@ -8,7 +8,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:pikapi/main.dart';
import 'package:pikapika/main.dart';
void main() {
testWidgets('Counter increments smoke test', (WidgetTester tester) async {

View File

@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.15)
project(pikapi LANGUAGES CXX)
set(BINARY_NAME "pikapi")
set(BINARY_NAME "pikapika")
cmake_policy(SET CMP0063 NEW)