ไธๆฌพ่ทจๅนณๅฐ็ๅผๆบGithubๅฎขๆท็ซฏApp๏ผๆไพๆดไธฐๅฏ็ๅ่ฝ๏ผๆดๅฅฝไฝ้ช๏ผๆจๅจๆดๅฅฝ็ๆฅๅธธ็ฎก็ๅ็ปดๆคไธชไบบGithub๏ผๆไพๆดๅฅฝๆดๆนไพฟ็้ฉพ่ฝฆไฝ้ช๏ฝ๏ฝฮฃ(๏ฟฃใ๏ฟฃ๏พ)๏พใ้กน็ฎๆถๅๅ็งๅธธ็จๆงไปถใ็ฝ็ปใๆฐๆฎๅบใ่ฎพ่ฎกๆจกๅผใไธป้ขๅๆขใๅค่ฏญ่จใ็ถๆ็ฎก็๏ผReduxใRiverpodใProvider๏ผ็ญใๅจๅผๅๅญฆไน ่ฟ็จไธญ๏ผๆไพไธฐๅฏ็ๅๆฌพๅฏนๆฏ๏ผ
-
็ฎๅ Flutter ็ฌ็ซๅญฆไน ้กน็ฎ ( https://github.com/CarGuo/gsy_flutter_demo )
-
ๅๆฌพWeex็ ๏ผ https://github.com/CarGuo/GSYGithubAppWeex ๏ผ
-
ๅๆฌพReactNative็ ๏ผ https://github.com/CarGuo/GSYGithubApp ๏ผ
-
ๅๆฌพAndroid Kotlin็ๆฌ๏ผ https://github.com/CarGuo/GSYGithubAppKotlin ๏ผ
ๅ ฌไผๅท | ๆ้ | ็ฅไน | CSDN | ็ฎไนฆ |
---|---|---|---|---|
GSYTech | ็นๆ | ็นๆ | ็นๆ | ็นๆ |
-
GSY่ไนฆ๏ผใFlutterๅผๅๅฎๆ่ฏฆ่งฃใไธๆถๅฆ๏ผไบฌไธ / ๅฝๅฝ / ็ตๅญ็ไบฌไธ่ฏปไนฆๅKindle
ๅ ไธบๆฏๅๅญฆไน ๅฑ็คบ้กน็ฎ๏ผๆไปฅ้กน็ฎ้ไผๆๅๅผๅๆ ท็ๆจกๅผใๅบใUI็ญ๏ผ่ฏทไธ่ฆไปๆ
0ใ ๅ จๅฑ็ถๆ็ฎก็็ฎๅๆๅค็งๆจกๅผ๏ผๅ ๆฌ ProviderใReduxใRiverpod ็ญ
1ใ TrendPage ๏ผ ็ฎๅ้็จ็บฏ riverpod ็ถๆ็ฎก็๏ผๆผ็คบ
2ใ Provider๏ผ็ฎๅๅจ RepositoryDetailPage ๅบไฝฟ็จ
3ใ Redux๏ผ็ฎๅๅฑ็คบไบๅ จๅฑ็ป้ๅ็จๆทไฟกๆฏ็ญไธ้ขไฝฟ็จใ
4ใ riverpod๏ผ็ฎๅ็จไบ็ฎก็ๅ จๅฑ็ฐๅบฆ๏ผๅค่ฏญ่จใ
5ใ Repos ็ญ่ฏทๆฑๅฑ็คบไบ graphQL
6ใ Redux๏ผ็ฎๅๅฑ็คบไบๅ จๅฑ็ป้ๅ็จๆทไฟกๆฏ็ญไธ้ขไฝฟ็จใ
7ใ Signals๏ผ็ฎๅ็จไบ NotifyPageใRepositoryDetailFileListPage ้กต้ขๅ ็ถๆ็ฎก็
ๅ่กจๆพ็คบๆๅคไธช๏ผๅ ถไธญ๏ผ
1ใgsy_pull_load_widget.dart.dart
common_list_page.dart ็ญไฝฟ็จ๏ผๆญ้ gsy_list_state.dart ไฝฟ็จ
2ใgsy_pull_new_load_widget.dart.dart
dynamic_page.dart ็ญไฝฟ็จ๏ผๆญ้ gsy_bloc_list_state.dart ไฝฟ็จ
ๆ iOS ๅ Android ไธค็ง้ฃๆ ผไธๆ้ฃๆ ผๆฏๆ
3ใgsy_nested_pull_load_widget.dart
trend_page.dart ็ญไฝฟ็จ๏ผ้ ็ฝฎsliver ๆๆ
1ใ้ ็ฝฎๅฅฝFlutterๅผๅ็ฏๅข(็ฎๅFlutter SDK ็ๆฌ 3.32)๏ผๅฏๅ้ ใๆญๅปบ็ฏๅขใใ
2ใcloneไปฃ็ ๏ผๆง่กPackages get
ๅฎ่ฃ
็ฌฌไธๆนๅ
ใ(ๅ ไธบๆไบไธๅฏๆๅๅๅ ๏ผๅฝๅ
ๅฏ่ฝ้่ฆ่ฎพ็ฝฎไปฃ็: ไปฃ็็ฏๅขๅ้)
class NetConfig {
static const CLIENT_ID = "xxxx";
static const CLIENT_SECRET = "xxxxxxxxxxx";
}
ย ๆณจๅ Github APP ไผ ้้จ๏ผๅฝ็ถ๏ผๅๆๆฏไฝ ็ฐๆไธไธชgithub่ดฆๅท(๏ฝ๏ฟฃโฝ๏ฟฃ)๏ฝ ใ
4ใๅฆๆไฝฟ็จๅฎๅ
จ็ปๅฝ๏ผๆๆ็ปๅฝ๏ผ๏ผ้ฃไนๅจไธ่ฟฐๆณจๅ Github App ็ Authorization callback URL ไธๆ ๅฟ
้กปๅกซๅ
ฅ gsygithubapp://authed
1ใๆฌๅฐ Flutter SDK ็ๆฌ 3.32 ๏ผ 2ใๆฏๅฆๆง่ก่ฟ
flutter pub get
๏ผ3ใ ็ฝ็ป็ญ้ฎ้ขๅ่: ๅฆๆๅบ็ฐ็ป้ๅคฑ่ดฅๆ่ ่ฏทๆฑๅคฑ่ดฅ
Apkไธ่ฝฝ้พๆฅ๏ผ Apkไธ่ฝฝ้พๆฅ1
Apkไธ่ฝฝ้พๆฅ๏ผ Apkไธ่ฝฝ้พๆฅ2
็ฑปๅ | ไบ็ปด็ |
---|---|
Apkไบ็ปด็ | ![]() |
iOSๆๆ ไธ่ฝฝ |
-
ๅฆๆๅ ๅๆญฅๅคฑ่ดฅ๏ผไธ่ฌ้ฝๆฏๅ ไธบๆฒก่ฎพ็ฝฎๅ ไปฃ็๏ผๅฏไปฅๅ่๏ผ็ฏๅขๅ้้ฎ้ข
ๅฝๅ Flutter SDK ็ๆฌ 3.32
็จๆทไบคไบ โ UIๅฑ(Widget/Page) โ ็ถๆๅฑ(Redux/Provider/Riverpod) โ ๆๅกๅฑ(Repositories)
โ ็ฝ็ปๅฑ(Net) โ GitHub API โ ๆฐๆฎๆจกๅ(Model) โ ๆฌๅฐๅญๅจ(DB) โ UIๆดๆฐ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ GSY GitHub App โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโค
โ UI Layer โ State Layer โ Service Layer โ Data Layer โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโค
โ โ โ โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโ โ โโโโโโโโโโโ โ โโโโโโโโโโโ โ
โ โ Pages โโ โ Redux โ โ โRepositoriesโ โ โ Models โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโ โ โโโโโโโโโโโ โ โโโโโโโโโโโ โ
โ โ โ โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโ โ โโโโโโโโโโโ โ โโโโโโโโโโโ โ
โ โ Widgets โโ โ Providerโ โ โNetwork APIโ โ โDatabase โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโ โ โโโโโโโโโโโ โ โโโโโโโโโโโ โ
โ โ โ โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโ โ โ โ
โ โCommon UIโโ โRiverpod โ โ โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโ โ โ โ
โ โ โ โ โ
โ โ โโโโโโโโโโโ โ โ โ
โ โ โ Signals โ โ โ โ
โ โ โโโโโโโโโโโ โ โ โ
โ โ โ โ โ
โโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโ
lib/
โโโ main.dart # ๅบ็จๅ
ฅๅฃ็น
โโโ main_prod.dart # ็ไบง็ฏๅขๅ
ฅๅฃ็น
โโโ app.dart # ๅบ็จ้
็ฝฎไธ่ทฏ็ฑ
โโโ common/ # ๅ
ฌๅ
ฑๅ่ฝๆจกๅ
โ โโโ config/ # ๅบ็จ้
็ฝฎ
โ โโโ event/ # ไบไปถๆป็บฟ
โ โโโ local/ # ๆฌๅฐๅ
โ โโโ localization/ # ๅค่ฏญ่จๆฏๆ
โ โโโ net/ # ็ฝ็ป่ฏทๆฑ
โ โโโ repositories/ # ๆฐๆฎไปๅบ
โ โโโ router/ # ่ทฏ็ฑ้
็ฝฎ
โ โโโ style/ # ๆ ทๅผ้
็ฝฎ
โ โโโ utils/ # ๅทฅๅ
ท็ฑป
โโโ db/ # ๆฐๆฎๅบ็ธๅ
ณ
โ โโโ provider/ # ๆฐๆฎๅบๆไพ่
โ โโโ sql_manager.dart # SQL็ฎก็ๅจ
โ โโโ sql_provider.dart # SQLๆไพ่
โโโ env/ # ็ฏๅข้
็ฝฎ
โโโ model/ # ๆฐๆฎๆจกๅ
โโโ page/ # ้กต้ข
โ โโโ debug/ # ่ฐ่ฏ้กต้ข
โ โโโ dynamic/ # ๅจๆ้กต้ข
โ โโโ home/ # ไธป้กต
โ โโโ issue/ # Issue็ธๅ
ณ้กต้ข
โ โโโ login/ # ็ปๅฝ้กต้ข
โ โโโ push/ # ๆจ้็ธๅ
ณ้กต้ข
โ โโโ release/ # ๅๅธ็ธๅ
ณ้กต้ข
โ โโโ repos/ # ไปๅบ็ธๅ
ณ้กต้ข
โ โโโ search/ # ๆ็ดข้กต้ข
โ โโโ trend/ # ่ถๅฟ้กต้ข
โ โโโ user/ # ็จๆท็ธๅ
ณ้กต้ข
โโโ provider/ # Provider็ถๆ็ฎก็
โโโ redux/ # Redux็ถๆ็ฎก็
โ โโโ middleware/ # Reduxไธญ้ดไปถ
โ โโโ gsy_state.dart # Redux็ถๆๅฎไน
โ โโโ login_redux.dart # ็ปๅฝ็ถๆ็ฎก็
โ โโโ user_redux.dart # ็จๆท็ถๆ็ฎก็
โโโ test/ # ๆต่ฏ็ธๅ
ณ
โโโ widget/ # ่ชๅฎไน็ปไปถ
โโโ anima/ # ๅจ็ป็ปไปถ
โโโ markdown/ # Markdownๆธฒๆ็ปไปถ
โโโ menu/ # ่ๅ็ปไปถ
โโโ particle/ # ็ฒๅญๆๆ็ปไปถ
โโโ pull/ # ไธๆๅทๆฐ็ปไปถ
โโโ state/ # ็ถๆ็ธๅ
ณ็ปไปถ
riverpod ้กต้ขๅ ็ถๆ็ฎก็๏ผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Page Architecture Overview โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Global State โ
โ โโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โ
โ โ appThemeProvider โ โ appLocalProvider โ โ appGrepProvider โ โ
โ โ (Theme Data) โ โ (Localization) โ โ (Grayscale Mode) โ โ
โ โโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโ
โผ โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ TrendPage (Riverpod) โ โ NotifyPage (Signals) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโ Riverpod Providers โ โ โโ Signals State โโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโ trendFirstProvider โโ โ โโโ notifySignal (List) โโโ
โโโ trendSecondProvider โโ โ โโโ notifyIndexSignal (int) โโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โโโ signalPage (int) โโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโ Local State (StatefulWidget)โ โ โโ SignalsMixin Processing โโ
โโ - UI Controls โ โ โโ - createEffect() for reactions โโ
โโ - Filter Parameters โ โ โโ - Manages data loading โโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โโ - Updates UI based on signals โโ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Data Layer โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ReposRepository / UserRepository โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ Network Request โโโโโฌโโโถโ Database Providers โ โ โ
โ โ โ - API calls โ โ โ - Data caching โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ โ
โ โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โโโโถโ Data Models โ โ โ
โ โ โ - Structure definitions โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ UI Components โ
โ โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โ
โ โ View Models โ โ List Items โ โ Interactive UI โ โ
โ โ - Data Formatting โ โ - Item Rendering โ โ - User Actions โ โ
โ โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
provider ้กต้ขๅ ็ถๆ็ฎก็๏ผ
+-----------------------------------------------------+
| App User Interface |
+-----------------------------------------------------+
|
v
+-----------------------------------------------------+
| RepositoryDetailPage (StatefulWidget) |
| with SingleTickerProviderStateMixin |
+-----------------------------------------------------+
|
v
+-----------------------------------------------------+
| MultiProvider |
+-----------------------------------------------------+
| |
v v
+------------------+ +-----------------------+
| ReposNetWork |<----------| ReposDetailProvider |
| Provider | | |
+---------+--------+ +-----------------------+
| |
| |
v v
+-----------------------------------------------------+
| Repository Data Services |
| (ReposRepository, IssueRepository) |
+-----------------------------------------------------+
|
v
+-----------------------------------------------------+
| Four Tab Pages (Consumers) |
+-----------------------------------------------------+
| | | |
v v v v
+----------+ +----------+ +----------+ +----------+
| Info | | Readme | | Issues | | Files |
| Page | | Page | | Page | | Page |
+----------+ +----------+ +----------+ +----------+
| | | |
| | | |
v v v v
+-----------------------------------------------------+
| GlobalKeys for Tab Access |
| (infoListKey, readmeKey, issueListKey, fileListKey) |
+-----------------------------------------------------+
CarGuo/GSYGithubAppFlutter is licensed under the
Apache License 2.0
A permissive license whose main conditions require preservation of copyright and license notices.
Contributors provide an express grant of patent rights.
Licensed works, modifications, and larger works may be distributed under different terms and without source code.