Skip to content

Flutter ่ถ…ๅฎŒๆ•ด็š„ๅผ€ๆบ้กน็›ฎ๏ผŒๅŠŸ่ƒฝไธฐๅฏŒ๏ผŒ้€‚ๅˆๅญฆไน ๅ’Œๆ—ฅๅธธไฝฟ็”จใ€‚GSYGithubApp ็ณปๅˆ—็š„ไผ˜ๅŠฟ๏ผšๆˆ‘ไปฌ็›ฎๅ‰ๅทฒ็ปๆ‹ฅๆœ‰ Flutterใ€Weexใ€ReactNativeใ€Kotlin Viewใ€Kotlin Jetpack Compose ไบ”ไธช็‰ˆๆœฌ๏ผŒๅŠŸ่ƒฝ้ฝๅ…จ๏ผŒ้กน็›ฎๆก†ๆžถๅ†…ๆŠ€ๆœฏๆถ‰ๅŠ้ขๅนฟ๏ผŒๅฎŒๆˆๅบฆ้ซ˜๏ผŒๆŒ็ปญ็ปดๆŠค๏ผŒ้…ๅฅ—ๆ–‡็ซ ๏ผŒ้€‚ๅˆๅ…จ้ขๅญฆไน ๏ผŒๅฏนๆฏ”ๅ‚่€ƒใ€‚

License

Notifications You must be signed in to change notification settings

CarGuo/gsy_github_app_flutter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Github Actions GitHub stars GitHub forks GitHub issues GitHub license star

ไธ€ๆฌพ่ทจๅนณๅฐ็š„ๅผ€ๆบGithubๅฎขๆˆท็ซฏApp๏ผŒๆไพ›ๆ›ดไธฐๅฏŒ็š„ๅŠŸ่ƒฝ๏ผŒๆ›ดๅฅฝไฝ“้ชŒ๏ผŒๆ—จๅœจๆ›ดๅฅฝ็š„ๆ—ฅๅธธ็ฎก็†ๅ’Œ็ปดๆŠคไธชไบบGithub๏ผŒๆไพ›ๆ›ดๅฅฝๆ›ดๆ–นไพฟ็š„้ฉพ่ฝฆไฝ“้ชŒ๏ฝž๏ฝžฮฃ(๏ฟฃใ€‚๏ฟฃ๏พ‰)๏พ‰ใ€‚้กน็›ฎๆถ‰ๅŠๅ„็งๅธธ็”จๆŽงไปถใ€็ฝ‘็ปœใ€ๆ•ฐๆฎๅบ“ใ€่ฎพ่ฎกๆจกๅผใ€ไธป้ข˜ๅˆ‡ๆขใ€ๅคš่ฏญ่จ€ใ€็Šถๆ€็ฎก็†๏ผˆReduxใ€Riverpodใ€Provider๏ผ‰็ญ‰ใ€‚ๅœจๅผ€ๅ‘ๅญฆไน ่ฟ‡็จ‹ไธญ๏ผŒๆไพ›ไธฐๅฏŒ็š„ๅŒๆฌพๅฏนๆฏ”๏ผš

็›ธๅ…ณๆ–‡็ซ 

ๅ…ฌไผ—ๅท ๆŽ˜้‡‘ ็ŸฅไนŽ CSDN ็ฎ€ไนฆ
GSYTech ็‚นๆˆ‘ ็‚นๆˆ‘ ็‚นๆˆ‘ ็‚นๆˆ‘


้กป็Ÿฅ

ๅ› ไธบๆ˜ฏๅๅญฆไน ๅฑ•็คบ้กน็›ฎ๏ผŒๆ‰€ไปฅ้กน็›ฎ้‡Œไผšๆœ‰ๅ„ๅผๅ„ๆ ท็š„ๆจกๅผใ€ๅบ“ใ€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.35)๏ผŒๅฏๅ‚้˜… ใ€ๆญๅปบ็Žฏๅขƒใ€‘ใ€‚

2ใ€cloneไปฃ็ ๏ผŒๆ‰ง่กŒPackages getๅฎ‰่ฃ…็ฌฌไธ‰ๆ–นๅŒ…ใ€‚(ๅ› ไธบๆŸไบ›ไธๅฏๆŠ—ๅŠ›ๅŽŸๅ› ๏ผŒๅ›ฝๅ†…ๅฏ่ƒฝ้œ€่ฆ่ฎพ็ฝฎไปฃ็†: ไปฃ็†็Žฏๅขƒๅ˜้‡)

3ใ€้‡็‚น๏ผšไฝ ้œ€่ฆ่‡ชๅทฑๅœจlib/common/config/็›ฎๅฝ•ไธ‹ ๅˆ›ๅปบไธ€ไธชignoreConfig.dartๆ–‡ไปถ๏ผŒ็„ถๅŽ่พ“ๅ…ฅไฝ ็”ณ่ฏท็š„Github client_id ๅ’Œ client_secretใ€‚

 class NetConfig {
   static const CLIENT_ID = "xxxx";
 
   static const CLIENT_SECRET = "xxxxxxxxxxx";
 }

ย  ๆณจๅ†Œ Github APP ไผ ้€้—จ๏ผŒๅฝ“็„ถ๏ผŒๅ‰ๆๆ˜ฏไฝ ็Žฐๆœ‰ไธ€ไธชgithub่ดฆๅท(๏ฝž๏ฟฃโ–ฝ๏ฟฃ)๏ฝž ใ€‚

4ใ€ๅฆ‚ๆžœไฝฟ็”จๅฎ‰ๅ…จ็™ปๅฝ•๏ผˆๆŽˆๆƒ็™ปๅฝ•๏ผ‰๏ผŒ้‚ฃไนˆๅœจไธŠ่ฟฐๆณจๅ†Œ Github App ็š„ Authorization callback URL ไธ€ๆ ๅฟ…้กปๅกซๅ…ฅ gsygithubapp://authed

5ใ€่ฟ่กŒไน‹ๅ‰่ฏทๆณจๆ„ไธ‹

1ใ€ๆœฌๅœฐ Flutter SDK ็‰ˆๆœฌ 3.35 ๏ผ› 2ใ€ๆ˜ฏๅฆๆ‰ง่กŒ่ฟ‡ flutter pub get๏ผ›3ใ€ ็ฝ‘็ปœ็ญ‰้—ฎ้ข˜ๅ‚่€ƒ: ๅฆ‚ๆžœๅ‡บ็Žฐ็™ป้™†ๅคฑ่ดฅๆˆ–่€…่ฏทๆฑ‚ๅคฑ่ดฅ

ไธ‹่ฝฝ

Apkไธ‹่ฝฝ้“พๆŽฅ๏ผš Apkไธ‹่ฝฝ้“พๆŽฅ1

Apkไธ‹่ฝฝ้“พๆŽฅ๏ผš Apkไธ‹่ฝฝ้“พๆŽฅ2

openapk

็ฑปๅž‹ ไบŒ็ปด็ 
ApkไบŒ็ปด็ 
iOSๆš‚ๆ— ไธ‹่ฝฝ

้กน็›ฎ็ป“ๆž„ๅ›พ

ๅธธ่ง้—ฎ้ข˜

็คบไพ‹ๅ›พ็‰‡

็คบไพ‹ๅ›พ็‰‡

ๆก†ๆžถ

ๅฝ“ๅ‰ Flutter SDK ็‰ˆๆœฌ 3.35

็”จๆˆทไบคไบ’ โ†’ 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) |
+-----------------------------------------------------+

ๆ›ดๅคšๅฏ่ง๏ผšhttps://codewiki.google/github.com/carguo/gsy_github_app_flutter

Star History Chart

Star History Chart

LICENSE

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.

About

Flutter ่ถ…ๅฎŒๆ•ด็š„ๅผ€ๆบ้กน็›ฎ๏ผŒๅŠŸ่ƒฝไธฐๅฏŒ๏ผŒ้€‚ๅˆๅญฆไน ๅ’Œๆ—ฅๅธธไฝฟ็”จใ€‚GSYGithubApp ็ณปๅˆ—็š„ไผ˜ๅŠฟ๏ผšๆˆ‘ไปฌ็›ฎๅ‰ๅทฒ็ปๆ‹ฅๆœ‰ Flutterใ€Weexใ€ReactNativeใ€Kotlin Viewใ€Kotlin Jetpack Compose ไบ”ไธช็‰ˆๆœฌ๏ผŒๅŠŸ่ƒฝ้ฝๅ…จ๏ผŒ้กน็›ฎๆก†ๆžถๅ†…ๆŠ€ๆœฏๆถ‰ๅŠ้ขๅนฟ๏ผŒๅฎŒๆˆๅบฆ้ซ˜๏ผŒๆŒ็ปญ็ปดๆŠค๏ผŒ้…ๅฅ—ๆ–‡็ซ ๏ผŒ้€‚ๅˆๅ…จ้ขๅญฆไน ๏ผŒๅฏนๆฏ”ๅ‚่€ƒใ€‚

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 11