├── .github
└── FUNDING.yml
├── .gitignore
├── .metadata
├── 1.jpg
├── 2.jpg
├── 3.jpg
├── LICENSE
├── README.md
├── README_EN.md
├── RECORD.md
├── VERSION.md
├── analysis_options.yaml
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── kotlin
│ │ └── com
│ │ │ └── shuyu
│ │ │ └── gsygithub
│ │ │ └── gsygithubappflutter
│ │ │ ├── MainActivity.kt
│ │ │ └── UpdateAlbumPlugin.kt
│ │ └── res
│ │ ├── drawable
│ │ └── launch_background.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ └── launch_image.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ └── launch_image.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ └── launch_image.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ └── launch_image.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ └── launch_image.png
│ │ └── values
│ │ └── styles.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── gsygithubapp-debug.jks
└── settings.gradle
├── download.png
├── folder.png
├── framework2.png
├── ios.gif
├── ios
├── .gitignore
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ └── Release.xcconfig
├── Podfile
├── Podfile.lock
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── WorkspaceSettings.xcsettings
└── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── logo-2.png
│ │ ├── logo-3.png
│ │ ├── logo-4.png
│ │ ├── logo2x-2.png
│ │ ├── logo2x-3.png
│ │ └── logo2x.png
│ ├── Contents.json
│ └── LaunchImage.imageset
│ │ ├── Contents.json
│ │ ├── Default@2x.png
│ │ ├── Default@3x-1.png
│ │ ├── Default@3x-2.png
│ │ ├── Default@3x-3.png
│ │ ├── Default@3x-4.png
│ │ └── Default@3x.png
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Info.plist
│ └── Runner-Bridging-Header.h
├── ios_wait.png
├── lib
├── bloc
│ ├── base
│ │ └── base_bloc.dart
│ ├── dynamic_bloc.dart
│ └── trend_bloc.dart
├── common
│ ├── ab
│ │ ├── provider
│ │ │ ├── event
│ │ │ │ ├── received_event_db_provider.dart
│ │ │ │ └── user_event_db_provider.dart
│ │ │ ├── issue
│ │ │ │ ├── issue_comment_db_provider.dart
│ │ │ │ └── issue_detail_db_provider.dart
│ │ │ ├── repos
│ │ │ │ ├── read_history_db_provider.dart
│ │ │ │ ├── repository_branch_db_provider.dart
│ │ │ │ ├── repository_commitInfo_detail_db_provider.dart
│ │ │ │ ├── repository_commits_db_provider.dart
│ │ │ │ ├── repository_detail_db_provider.dart
│ │ │ │ ├── repository_detail_readme_db_provider.dart
│ │ │ │ ├── repository_event_db_provider.dart
│ │ │ │ ├── repository_fork_db_provider.dart
│ │ │ │ ├── repository_issue_db_provider.dart
│ │ │ │ ├── repository_pulse_db_provider.dart
│ │ │ │ ├── repository_star_db_provider.dart
│ │ │ │ ├── repository_watcher_db_provider.dart
│ │ │ │ └── trend_repository_db_provider.dart
│ │ │ └── user
│ │ │ │ ├── org_member_db_provider.dart
│ │ │ │ ├── user_followed_db_provider.dart
│ │ │ │ ├── user_follower_db_provider.dart
│ │ │ │ ├── user_orgs_db_provider.dart
│ │ │ │ ├── user_repos_db_provider.dart
│ │ │ │ ├── user_stared_db_provider.dart
│ │ │ │ └── userinfo_db_provider.dart
│ │ ├── sql_manager.dart
│ │ └── sql_provider.dart
│ ├── config
│ │ └── config.dart
│ ├── dao
│ │ ├── dao_result.dart
│ │ ├── event_dao.dart
│ │ ├── issue_dao.dart
│ │ ├── repos_dao.dart
│ │ └── user_dao.dart
│ ├── event
│ │ └── http_error_event.dart
│ ├── local
│ │ └── local_storage.dart
│ ├── localization
│ │ ├── default_localizations.dart
│ │ └── gsy_localizations_delegate.dart
│ ├── model
│ │ ├── Branch.dart
│ │ ├── Branch.g.dart
│ │ ├── CommitComment.dart
│ │ ├── CommitComment.g.dart
│ │ ├── CommitFile.dart
│ │ ├── CommitFile.g.dart
│ │ ├── CommitGitInfo.dart
│ │ ├── CommitGitInfo.g.dart
│ │ ├── CommitGitUser.dart
│ │ ├── CommitGitUser.g.dart
│ │ ├── CommitStats.dart
│ │ ├── CommitStats.g.dart
│ │ ├── CommitsComparison.dart
│ │ ├── CommitsComparison.g.dart
│ │ ├── DownloadSource.dart
│ │ ├── DownloadSource.g.dart
│ │ ├── Event.dart
│ │ ├── Event.g.dart
│ │ ├── EventPayload.dart
│ │ ├── EventPayload.g.dart
│ │ ├── FileModel.dart
│ │ ├── FileModel.g.dart
│ │ ├── Issue.dart
│ │ ├── Issue.g.dart
│ │ ├── IssueEvent.dart
│ │ ├── IssueEvent.g.dart
│ │ ├── License.dart
│ │ ├── License.g.dart
│ │ ├── Notification.dart
│ │ ├── Notification.g.dart
│ │ ├── NotificationSubject.dart
│ │ ├── NotificationSubject.g.dart
│ │ ├── PushCommit.dart
│ │ ├── PushCommit.g.dart
│ │ ├── PushEventCommit.dart
│ │ ├── PushEventCommit.g.dart
│ │ ├── Release.dart
│ │ ├── Release.g.dart
│ │ ├── ReleaseAsset.dart
│ │ ├── ReleaseAsset.g.dart
│ │ ├── RepoCommit.dart
│ │ ├── RepoCommit.g.dart
│ │ ├── Repository.dart
│ │ ├── Repository.g.dart
│ │ ├── RepositoryPermissions.dart
│ │ ├── RepositoryPermissions.g.dart
│ │ ├── Template.dart
│ │ ├── Template.g.dart
│ │ ├── TrendingRepoModel.dart
│ │ ├── TrendingRepoModel.g.dart
│ │ ├── User.dart
│ │ ├── User.g.dart
│ │ ├── UserOrg.dart
│ │ └── UserOrg.g.dart
│ ├── net
│ │ ├── address.dart
│ │ ├── api.dart
│ │ ├── code.dart
│ │ ├── interceptors
│ │ │ ├── error_interceptor.dart
│ │ │ ├── header_interceptor.dart
│ │ │ ├── log_interceptor.dart
│ │ │ ├── response_interceptor.dart
│ │ │ └── token_interceptor.dart
│ │ ├── result_data.dart
│ │ └── trending
│ │ │ └── github_trending.dart
│ ├── redux
│ │ ├── gsy_state.dart
│ │ ├── locale_redux.dart
│ │ ├── middleware
│ │ │ ├── combine_epics.dart
│ │ │ ├── epic.dart
│ │ │ ├── epic_middleware.dart
│ │ │ └── epic_store.dart
│ │ ├── theme_redux.dart
│ │ └── user_redux.dart
│ ├── style
│ │ ├── gsy_string_base.dart
│ │ ├── gsy_string_en.dart
│ │ ├── gsy_string_zh.dart
│ │ └── gsy_style.dart
│ └── utils
│ │ ├── code_utils.dart
│ │ ├── common_utils.dart
│ │ ├── event_utils.dart
│ │ ├── html_utils.dart
│ │ └── navigator_utils.dart
├── main.dart
├── page
│ ├── code_detail_page.dart
│ ├── code_detail_page_web.dart
│ ├── common_list_page.dart
│ ├── dynamic_page.dart
│ ├── gsy_webview.dart
│ ├── home_page.dart
│ ├── issue_detail_page.dart
│ ├── login_page.dart
│ ├── my_page.dart
│ ├── notify_page.dart
│ ├── person_page.dart
│ ├── photoview_page.dart
│ ├── push_detail_page.dart
│ ├── release_page.dart
│ ├── repository_detail_issue_list_page.dart
│ ├── repository_detail_page.dart
│ ├── repository_detail_readme_page.dart
│ ├── repository_file_list_page.dart
│ ├── repostory_detail_info_page.dart
│ ├── search_page.dart
│ ├── trend_page.dart
│ ├── user_profile_page.dart
│ └── welcome_page.dart
├── test
│ ├── demo_app.dart
│ ├── demo_db.dart
│ ├── demo_item.dart
│ ├── demo_mixins.dart
│ ├── demo_page.dart
│ ├── demo_user_store.dart
│ └── demo_widget.dart
└── widget
│ ├── base_person_state.dart
│ ├── event_item.dart
│ ├── gsy_bloc_list_state.dart
│ ├── gsy_card_item.dart
│ ├── gsy_common_option_widget.dart
│ ├── gsy_flex_button.dart
│ ├── gsy_icon_text.dart
│ ├── gsy_input_widget.dart
│ ├── gsy_list_state.dart
│ ├── gsy_markdown_widget.dart
│ ├── gsy_pull_load_widget.dart
│ ├── gsy_pull_new_load_widget.dart
│ ├── gsy_search_drawer.dart
│ ├── gsy_search_input_widget.dart
│ ├── gsy_select_item_widget.dart
│ ├── gsy_tabbar_widget.dart
│ ├── gsy_title_bar.dart
│ ├── gsy_user_icon_widget.dart
│ ├── home_drawer.dart
│ ├── issue_edit_dIalog.dart
│ ├── issue_header_item.dart
│ ├── issue_item.dart
│ ├── menu
│ ├── flutter_radial_menu.dart
│ └── src
│ │ ├── arc_progress_indicator.dart
│ │ ├── radial_menu.dart
│ │ ├── radial_menu_button.dart
│ │ ├── radial_menu_center_button.dart
│ │ └── radial_menu_item.dart
│ ├── nested
│ ├── gsy_nested_pull_load_widget.dart
│ └── nested_refresh.dart
│ ├── network_cache_image.dart
│ ├── push_coed_item.dart
│ ├── push_header.dart
│ ├── release_item.dart
│ ├── repos_header_item.dart
│ ├── repos_item.dart
│ ├── syntax_high_lighter.dart
│ ├── user_header.dart
│ └── user_item.dart
├── logo.png
├── pubspec.lock
├── pubspec.yaml
├── register0.jpg
├── register1.jpg
├── static
├── file
│ ├── rejection.json
│ └── rejection2.json
├── font
│ ├── demo.css
│ ├── demo_fontclass.html
│ ├── demo_symbol.html
│ ├── demo_unicode.html
│ ├── iconfont.css
│ ├── iconfont.eot
│ ├── iconfont.js
│ ├── iconfont.svg
│ ├── iconfont.ttf
│ └── iconfont.woff
└── images
│ ├── default_img.png
│ ├── logo.png
│ └── welcome.png
├── thanks.jpg
└── theme.gif
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: [CarGuo]
4 | custom: https://github.com/CarGuo/GSYVideoPlayer/blob/master/img/thanks.jpg
5 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .dart_tool/
3 |
4 | .packages
5 | .pub/
6 |
7 | build/
8 |
9 | .flutter-plugins
10 |
11 | *.iml
12 |
13 | .idea/
14 |
15 | .gradle/
16 |
17 | ignoreConfig.dart
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: c7ea3ca377e909469c68f2ab878a5bc53d3cf66b
8 | channel: beta
9 |
--------------------------------------------------------------------------------
/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/1.jpg
--------------------------------------------------------------------------------
/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/2.jpg
--------------------------------------------------------------------------------
/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/3.jpg
--------------------------------------------------------------------------------
/VERSION.md:
--------------------------------------------------------------------------------
1 |
2 | ###(待处理)
3 |
4 | * 仓库Pulse。
5 | * markdown点击跳转。
6 | * webview点击跳转。
7 | * markdown htmlview 表格。
8 | * 版本信息列表
9 | * 监听滚动,设置底部和顶部隐藏显示
10 |
11 | ### 1.1.9
12 |
13 | * 修正弹出键盘的时候被挤压问题
14 | * 修复切换主题导致长按输入框弹出异常
15 | * 修复其他小问题。
16 |
17 |
18 | ### 1.1.8
19 |
20 | * 修复反馈输入框遮挡问题。
21 | * 更新部分插件,更新了 sdk 到 1.1.9
22 |
23 | ### 1.1.7
24 |
25 | * 更新flutter SDK 到 1.1.3 版本,修复TargetSDK 28以上在9.0键盘无法弹出问题。
26 |
27 |
28 |
29 | ### 1.1.6
30 | * flutter升级正式版1.0
31 |
32 |
33 | ### 1.1.5
34 |
35 | * Android 代码详情使用 AndroidView 实现WebView
36 | * 升级flutter Sdk
37 | * 升级第三方包
38 |
39 | ### 1.1.3
40 | * 修复详情tab切换问题。
41 |
42 | ### 1.1.2
43 | * 增加滑动返回。
44 | * 修复主页抽屉小屏幕无法滚动。
45 | * 增加部分代码高亮。
46 | * 修复搜索排序按键问题。
47 | * 更新flutter SDK
48 |
49 |
50 | ### 1.1.1
51 | * 更新flutter SDK 0.5.8。
52 | * 修复一些仓库下的readme问题。
53 |
54 | ### 1.1.0
55 | * 切换用户切换数据库。
56 | * 多语言。
57 |
58 | ### 1.0.9
59 | * 切换主题支持
60 | * 问题修复
61 |
62 | ### 1.0.8
63 | * readme图片解析优化
64 | * readme图片增加点击查看
65 | * 组织账号不显示活跃记录Item
66 | * 增加用户组织显示
67 |
68 |
69 |
70 | ### 1.0.7
71 | * 增加图片预览
72 | * 修复未读的通知打开提示其他异常
73 | * 增加fork仓库跳转到原仓库
74 | * 增加仓库点击展示 issue 状态信息
75 | * 增加个人状态信息可跳转
76 | * 增加仓库Topic显示
77 | * 通知中心增加侧滑点击已读
78 |
79 | ### 1.0.6
80 | * trend修改为redux
81 | * 增加本地阅读历史
82 | * drawer 状态栏样式处理
83 | * 增加个人动态提交表。
84 |
85 | ### 1.0.5
86 | * 增加本地数据库
87 | * 修复分享问题。
88 | * 修改用户页面样式
89 | * 增加用户加入github时间显示
90 |
91 | ### 1.0.4
92 |
93 | * 修复启动页变形问题。
94 | * 调整个人页面字体动态大小。
95 | * 增加趋势语言,搜索语言dart选项。
96 | * 增加前后台切换刷新动态。
97 | * 增加触摸隐藏键盘。
98 | * 增加点击检测版本。
99 | * 增加 issue 使用markdown解析
100 | * 增加 issue 输入框的快速输入按键。
101 | * 增加 issue 关闭操作信息。
102 | * 返回文件列表的返回键处理逻辑。
103 | * 修复详情中存在的model转化问题。
104 |
105 |
106 | ### 1.0.1 (已发布)
107 |
108 | * 修复loading弹出框黄线问题。
109 | * 调整部分ui。
110 | * 增加Release列表。
111 | * 增加版检测。
112 | * Issue详情页显示问题。
113 | * 返回按键退出问题。
114 |
115 |
116 |
117 | ### 1.0.0
118 |
119 | * 第一版完成
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | analyzer:
2 | language:
3 | enableSuperMixins: true
4 | errors:
5 | mixin_inherits_from_not_object: ignore
6 | mixin_references_super: ignore
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | *.class
3 | .gradle
4 | /local.properties
5 | /.idea/workspace.xml
6 | /.idea/libraries
7 | .DS_Store
8 | /build
9 | /captures
10 | GeneratedPluginRegistrant.java
11 |
--------------------------------------------------------------------------------
/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | def localProperties = new Properties()
2 | def localPropertiesFile = rootProject.file('local.properties')
3 | if (localPropertiesFile.exists()) {
4 | localPropertiesFile.withReader('UTF-8') { reader ->
5 | localProperties.load(reader)
6 | }
7 | }
8 |
9 | def flutterRoot = localProperties.getProperty('flutter.sdk')
10 | if (flutterRoot == null) {
11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
12 | }
13 |
14 | apply plugin: 'com.android.application'
15 | apply plugin: 'kotlin-android'
16 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
17 |
18 | android {
19 | compileSdkVersion 28
20 |
21 | sourceSets {
22 | main.java.srcDirs += 'src/main/kotlin'
23 | }
24 |
25 | lintOptions {
26 | disable 'InvalidPackage'
27 | }
28 |
29 | defaultConfig {
30 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
31 | applicationId "com.shuyu.gsygithub.gsygithubappflutter"
32 | minSdkVersion 16
33 | targetSdkVersion 28
34 | versionCode 22
35 | versionName "1.4.0"
36 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
37 | }
38 |
39 |
40 | signingConfigs {
41 | debug {
42 | storeFile file("../gsygithubapp-debug.jks")
43 | storePassword "123456"
44 | keyAlias "debug"
45 | keyPassword "123456"
46 | }
47 | release {
48 | storeFile file("../gsygithubapp-debug.jks")
49 | storePassword "123456"
50 | keyAlias "debug"
51 | keyPassword "123456"
52 | }
53 | }
54 |
55 | buildTypes {
56 | debug {
57 | signingConfig signingConfigs.debug
58 | }
59 | release {
60 | signingConfig signingConfigs.release
61 | }
62 | }
63 | lintOptions {
64 | abortOnError false
65 | }
66 | }
67 |
68 | flutter {
69 | source '../..'
70 | }
71 |
72 | dependencies {
73 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
74 | testImplementation 'junit:junit:4.12'
75 | androidTestImplementation 'com.android.support.test:runner:1.0.1'
76 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
77 | }
78 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
8 |
9 |
10 |
11 |
16 |
20 |
27 |
31 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/shuyu/gsygithub/gsygithubappflutter/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.shuyu.gsygithub.gsygithubappflutter
2 |
3 | import android.os.Bundle
4 |
5 | import io.flutter.app.FlutterActivity
6 | import io.flutter.plugins.GeneratedPluginRegistrant
7 |
8 | class MainActivity(): FlutterActivity() {
9 | override fun onCreate(savedInstanceState: Bundle?) {
10 | super.onCreate(savedInstanceState)
11 | GeneratedPluginRegistrant.registerWith(this)
12 | UpdateAlbumPlugin.register(this, flutterView)
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/shuyu/gsygithub/gsygithubappflutter/UpdateAlbumPlugin.kt:
--------------------------------------------------------------------------------
1 | import android.content.Context
2 | import android.content.Intent
3 | import android.net.Uri
4 | import android.provider.MediaStore
5 | import io.flutter.plugin.common.BinaryMessenger
6 | import io.flutter.plugin.common.MethodChannel
7 |
8 | object UpdateAlbumPlugin {
9 |
10 | /** Channel名称 **/
11 | private const val ChannelName = "com.shuyu.gsygithub.gsygithubflutter/UpdateAlbumPlugin"
12 |
13 | /**
14 | * 注册Toast插件
15 | * @param context 上下文对象
16 | * @param messenger 数据信息交流对象
17 | */
18 | @JvmStatic
19 | fun register(context: Context, messenger: BinaryMessenger) = MethodChannel(messenger, ChannelName).setMethodCallHandler { methodCall, result ->
20 | when (methodCall.method) {
21 | "updateAlbum" -> {
22 | val path: String? = methodCall.argument("path")
23 | val name: String? = methodCall.argument("name")
24 | try {
25 | MediaStore.Images.Media.insertImage(context.contentResolver, path, name, null)
26 | } catch (e: Exception) {
27 | e.printStackTrace()
28 | }
29 | // 最后通知图库更新
30 | context.sendBroadcast(Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://$path")))
31 | }
32 | }
33 | result.success(null) //没有返回值,所以直接返回为null
34 | }
35 |
36 | }
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | -
7 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/launch_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/android/app/src/main/res/mipmap-hdpi/launch_image.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/launch_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/android/app/src/main/res/mipmap-mdpi/launch_image.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/launch_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/android/app/src/main/res/mipmap-xhdpi/launch_image.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/launch_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/android/app/src/main/res/mipmap-xxhdpi/launch_image.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/launch_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/android/app/src/main/res/mipmap-xxxhdpi/launch_image.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.2.71'
3 | repositories {
4 | google()
5 | jcenter()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:3.2.0'
10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 | }
12 | }
13 |
14 | allprojects {
15 | repositories {
16 | google()
17 | jcenter()
18 | }
19 | }
20 |
21 | rootProject.buildDir = '../build'
22 | subprojects {
23 | project.buildDir = "${rootProject.buildDir}/${project.name}"
24 | }
25 | subprojects {
26 | project.evaluationDependsOn(':app')
27 | }
28 |
29 | task clean(type: Delete) {
30 | delete rootProject.buildDir
31 | }
32 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/android/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
7 |
--------------------------------------------------------------------------------
/android/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/android/gsygithubapp-debug.jks:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/android/gsygithubapp-debug.jks
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
4 |
5 | def plugins = new Properties()
6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
7 | if (pluginsFile.exists()) {
8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
9 | }
10 |
11 | plugins.each { name, path ->
12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
13 | include ":$name"
14 | project(":$name").projectDir = pluginDirectory
15 | }
16 |
--------------------------------------------------------------------------------
/download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/download.png
--------------------------------------------------------------------------------
/folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/folder.png
--------------------------------------------------------------------------------
/framework2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/framework2.png
--------------------------------------------------------------------------------
/ios.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/ios.gif
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | .vagrant/
3 | .sconsign.dblite
4 | .svn/
5 |
6 | .DS_Store
7 | *.swp
8 | profile
9 |
10 | DerivedData/
11 | build/
12 | GeneratedPluginRegistrant.h
13 | GeneratedPluginRegistrant.m
14 |
15 | .generated/
16 |
17 | *.pbxuser
18 | *.mode1v3
19 | *.mode2v3
20 | *.perspectivev3
21 |
22 | !default.pbxuser
23 | !default.mode1v3
24 | !default.mode2v3
25 | !default.perspectivev3
26 |
27 | xcuserdata
28 |
29 | *.moved-aside
30 |
31 | *.pyc
32 | *sync/
33 | Icon?
34 | .tags*
35 |
36 | /Flutter/app.flx
37 | /Flutter/app.zip
38 | /Flutter/flutter_assets/
39 | /Flutter/App.framework
40 | /Flutter/Flutter.framework
41 | /Flutter/Generated.xcconfig
42 | /ServiceDefinitions.json
43 |
44 | Pods/
45 | .symlinks/
46 |
--------------------------------------------------------------------------------
/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/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true'
6 |
7 | def parse_KV_file(file, separator='=')
8 | file_abs_path = File.expand_path(file)
9 | if !File.exists? file_abs_path
10 | return [];
11 | end
12 | pods_ary = []
13 | skip_line_start_symbols = ["#", "/"]
14 | File.foreach(file_abs_path) { |line|
15 | next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
16 | plugin = line.split(pattern=separator)
17 | if plugin.length == 2
18 | podname = plugin[0].strip()
19 | path = plugin[1].strip()
20 | podpath = File.expand_path("#{path}", file_abs_path)
21 | pods_ary.push({:name => podname, :path => podpath});
22 | else
23 | puts "Invalid plugin specification: #{line}"
24 | end
25 | }
26 | return pods_ary
27 | end
28 |
29 | target 'Runner' do
30 | use_frameworks!
31 |
32 | # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
33 | # referring to absolute paths on developers' machines.
34 | system('rm -rf .symlinks')
35 | system('mkdir -p .symlinks/plugins')
36 |
37 | # Flutter Pods
38 | generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig')
39 | if generated_xcode_build_settings.empty?
40 | puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter packages get is executed first."
41 | end
42 | generated_xcode_build_settings.map { |p|
43 | if p[:name] == 'FLUTTER_FRAMEWORK_DIR'
44 | symlink = File.join('.symlinks', 'flutter')
45 | File.symlink(File.dirname(p[:path]), symlink)
46 | pod 'Flutter', :path => File.join(symlink, File.basename(p[:path]))
47 | end
48 | }
49 |
50 | # Plugin Pods
51 | plugin_pods = parse_KV_file('../.flutter-plugins')
52 | plugin_pods.map { |p|
53 | symlink = File.join('.symlinks', 'plugins', p[:name])
54 | File.symlink(p[:path], symlink)
55 | pod p[:name], :path => File.join(symlink, 'ios')
56 | }
57 | end
58 |
59 | post_install do |installer|
60 | installer.pods_project.targets.each do |target|
61 | target.build_configurations.each do |config|
62 | config.build_settings['ENABLE_BITCODE'] = 'NO'
63 | end
64 | end
65 | end
66 |
--------------------------------------------------------------------------------
/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.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildSystemType
6 | Original
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: [UIApplicationLaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | GeneratedPluginRegistrant.register(with: self)
11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "20x20",
5 | "idiom" : "iphone",
6 | "filename" : "logo-2.png",
7 | "scale" : "2x"
8 | },
9 | {
10 | "size" : "20x20",
11 | "idiom" : "iphone",
12 | "filename" : "logo2x-2.png",
13 | "scale" : "3x"
14 | },
15 | {
16 | "size" : "29x29",
17 | "idiom" : "iphone",
18 | "filename" : "logo-3.png",
19 | "scale" : "2x"
20 | },
21 | {
22 | "size" : "29x29",
23 | "idiom" : "iphone",
24 | "filename" : "logo2x.png",
25 | "scale" : "3x"
26 | },
27 | {
28 | "size" : "40x40",
29 | "idiom" : "iphone",
30 | "filename" : "logo2x-3.png",
31 | "scale" : "2x"
32 | },
33 | {
34 | "size" : "40x40",
35 | "idiom" : "iphone",
36 | "filename" : "logo-4.png",
37 | "scale" : "3x"
38 | },
39 | {
40 | "idiom" : "iphone",
41 | "size" : "60x60",
42 | "scale" : "2x"
43 | },
44 | {
45 | "idiom" : "iphone",
46 | "size" : "60x60",
47 | "scale" : "3x"
48 | },
49 | {
50 | "idiom" : "ios-marketing",
51 | "size" : "1024x1024",
52 | "scale" : "1x"
53 | }
54 | ],
55 | "info" : {
56 | "version" : 1,
57 | "author" : "xcode"
58 | }
59 | }
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-2.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-3.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-4.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo2x-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo2x-2.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo2x-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo2x-3.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "iphone",
9 | "subtype" : "retina4",
10 | "scale" : "1x"
11 | },
12 | {
13 | "idiom" : "iphone",
14 | "filename" : "Default@3x-1.png",
15 | "scale" : "2x"
16 | },
17 | {
18 | "idiom" : "iphone",
19 | "filename" : "Default@3x-2.png",
20 | "subtype" : "retina4",
21 | "scale" : "2x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "filename" : "Default@2x.png",
26 | "subtype" : "667h",
27 | "scale" : "2x"
28 | },
29 | {
30 | "idiom" : "iphone",
31 | "filename" : "Default@3x.png",
32 | "scale" : "3x"
33 | },
34 | {
35 | "idiom" : "iphone",
36 | "filename" : "Default@3x-4.png",
37 | "subtype" : "retina4",
38 | "scale" : "3x"
39 | },
40 | {
41 | "idiom" : "iphone",
42 | "subtype" : "736h",
43 | "scale" : "3x"
44 | },
45 | {
46 | "idiom" : "iphone",
47 | "filename" : "Default@3x-3.png",
48 | "subtype" : "2436h",
49 | "scale" : "3x"
50 | },
51 | {
52 | "idiom" : "iphone",
53 | "scale" : "2x",
54 | "unassigned" : true
55 | },
56 | {
57 | "idiom" : "iphone",
58 | "unassigned" : true,
59 | "subtype" : "retina4",
60 | "scale" : "2x"
61 | }
62 | ],
63 | "info" : {
64 | "version" : 1,
65 | "author" : "xcode"
66 | }
67 | }
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/ios/Runner/Assets.xcassets/LaunchImage.imageset/Default@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Default@3x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/ios/Runner/Assets.xcassets/LaunchImage.imageset/Default@3x-1.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Default@3x-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/ios/Runner/Assets.xcassets/LaunchImage.imageset/Default@3x-2.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Default@3x-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/ios/Runner/Assets.xcassets/LaunchImage.imageset/Default@3x-3.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Default@3x-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/ios/Runner/Assets.xcassets/LaunchImage.imageset/Default@3x-4.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Default@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/ios/Runner/Assets.xcassets/LaunchImage.imageset/Default@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | GSYGithubAppFlutter
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | GSYGithubAppFlutter
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.4.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 22
25 | LSRequiresIPhoneOS
26 |
27 | NSAppTransportSecurity
28 |
29 | NSAllowsArbitraryLoads
30 |
31 | NSAllowsArbitraryLoadsInWebContent
32 |
33 | NSExceptionDomains
34 |
35 | localhost
36 |
37 | NSExceptionAllowsInsecureHTTPLoads
38 |
39 |
40 |
41 |
42 | UILaunchStoryboardName
43 | LaunchScreen
44 | UIMainStoryboardFile
45 | Main
46 | UISupportedInterfaceOrientations
47 |
48 | UIInterfaceOrientationPortrait
49 | UIInterfaceOrientationLandscapeLeft
50 | UIInterfaceOrientationLandscapeRight
51 |
52 | UISupportedInterfaceOrientations~ipad
53 |
54 | UIInterfaceOrientationPortrait
55 | UIInterfaceOrientationPortraitUpsideDown
56 | UIInterfaceOrientationLandscapeLeft
57 | UIInterfaceOrientationLandscapeRight
58 |
59 | UIViewControllerBasedStatusBarAppearance
60 |
61 | io.flutter.embedded_views_preview
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/ios_wait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hongyangAndroid/GSYGithubAppFlutter/fac4f138c86f7e42530943d67bb49b6987918d35/ios_wait.png
--------------------------------------------------------------------------------
/lib/bloc/dynamic_bloc.dart:
--------------------------------------------------------------------------------
1 | import 'package:gsy_github_app_flutter/bloc/base/base_bloc.dart';
2 | import 'package:gsy_github_app_flutter/common/dao/event_dao.dart';
3 |
4 | /**
5 | * Created by guoshuyu
6 | * on 2019/3/23.
7 | */
8 | class DynamicBloc extends BlocListBase {
9 | requestRefresh(String userName) async {
10 | pageReset();
11 | var res = await EventDao.getEventReceived(userName, page: page, needDb: true);
12 | changeLoadMoreStatus(getLoadMoreStatus(res));
13 | refreshData(res);
14 | await doNext(res);
15 | return res;
16 | }
17 |
18 | requestLoadMore(String userName) async {
19 | pageUp();
20 | var res = await EventDao.getEventReceived(userName, page: page);
21 | changeLoadMoreStatus(getLoadMoreStatus(res));
22 | loadMoreData(res);
23 | return res;
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/lib/bloc/trend_bloc.dart:
--------------------------------------------------------------------------------
1 | import 'package:gsy_github_app_flutter/common/dao/repos_dao.dart';
2 | import 'package:gsy_github_app_flutter/common/model/TrendingRepoModel.dart';
3 | import 'package:rxdart/rxdart.dart';
4 |
5 | /**
6 | * Created by guoshuyu
7 | * on 2019/3/23.
8 | */
9 | class TrendBloc {
10 | bool _requested = false;
11 |
12 | bool _isLoading = false;
13 |
14 | ///是否正在loading
15 | bool get isLoading => _isLoading;
16 |
17 | ///是否已经请求过
18 | bool get requested => _requested;
19 |
20 | ///rxdart 实现的 stream
21 | var _subject = PublishSubject>();
22 |
23 | Observable> get stream => _subject.stream;
24 |
25 | ///根据数据库和网络返回数据
26 | Future requestRefresh(selectTime, selectType) async {
27 | _isLoading = true;
28 | //_subject.add([]);
29 | var res = await ReposDao.getTrendDao(since: selectTime.value, languageType: selectType.value);
30 | if (res != null && res.result) {
31 | _subject.add(res.data);
32 | }
33 | await doNext(res);
34 | _isLoading = false;
35 | _requested = true;
36 | return;
37 | }
38 |
39 | ///请求next,是否有网络
40 | doNext(res) async {
41 | if (res.next != null) {
42 | var resNext = await res.next;
43 | if (resNext != null && resNext.result) {
44 | if (res != null && res.result) {
45 | _subject.add(res.data);
46 | }
47 | }
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/lib/common/ab/provider/event/received_event_db_provider.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 | import 'package:flutter/foundation.dart';
3 | import 'package:gsy_github_app_flutter/common/utils/code_utils.dart';
4 | import 'package:gsy_github_app_flutter/common/ab/sql_provider.dart';
5 | import 'package:gsy_github_app_flutter/common/model/Event.dart';
6 | import 'package:sqflite/sqflite.dart';
7 |
8 | /**
9 | * 用户接受事件表
10 | * Created by guoshuyu
11 | * Date: 2018-08-07
12 | */
13 |
14 | class ReceivedEventDbProvider extends BaseDbProvider {
15 | final String name = 'ReceivedEvent';
16 |
17 | final String columnId = "_id";
18 | final String columnData = "data";
19 |
20 | int id;
21 | String data;
22 |
23 | ReceivedEventDbProvider();
24 |
25 | Map toMap(String eventMapString) {
26 | Map map = {columnData: eventMapString};
27 | if (id != null) {
28 | map[columnId] = id;
29 | }
30 | return map;
31 | }
32 |
33 | ReceivedEventDbProvider.fromMap(Map map) {
34 | id = map[columnId];
35 | data = map[columnData];
36 | }
37 |
38 | @override
39 | tableSqlString() {
40 | return tableBaseString(name, columnId) +
41 | '''
42 | $columnData text not null)
43 | ''';
44 | }
45 |
46 | @override
47 | tableName() {
48 | return name;
49 | }
50 |
51 | ///插入到数据库
52 | Future insert(String eventMapString) async {
53 | Database db = await getDataBase();
54 |
55 | ///清空后再插入,因为只保存第一页面
56 | db.execute("delete from $name");
57 | return await db.insert(name, toMap(eventMapString));
58 | }
59 |
60 | ///获取事件数据
61 | Future> getEvents() async {
62 | Database db = await getDataBase();
63 | List