├── .all-contributorsrc ├── .fvm └── fvm_config.json ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── PR_template.md └── workflows │ ├── deploy.yml │ └── rebase.yml ├── .gitignore ├── .metadata ├── CNAME ├── CONTRIBUTING.md ├── README.md ├── analysis_options.yml ├── android ├── .gitignore ├── app │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ │ └── io │ │ │ │ └── github │ │ │ │ └── flutterph │ │ │ │ └── devs │ │ │ │ └── MainActivity.kt │ │ └── res │ │ │ ├── drawable │ │ │ └── launch_background.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── values-night │ │ │ └── styles.xml │ │ │ └── values │ │ │ └── styles.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties └── settings.gradle ├── assets ├── data │ └── devs.json └── logos │ └── logo.png ├── ios ├── .gitignore ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Podfile ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings └── Runner │ ├── AppDelegate.swift │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── Icon-App-1024x1024@1x.png │ │ ├── Icon-App-20x20@1x.png │ │ ├── Icon-App-20x20@2x.png │ │ ├── Icon-App-20x20@3x.png │ │ ├── Icon-App-29x29@1x.png │ │ ├── Icon-App-29x29@2x.png │ │ ├── Icon-App-29x29@3x.png │ │ ├── Icon-App-40x40@1x.png │ │ ├── Icon-App-40x40@2x.png │ │ ├── Icon-App-40x40@3x.png │ │ ├── Icon-App-60x60@2x.png │ │ ├── Icon-App-60x60@3x.png │ │ ├── Icon-App-76x76@1x.png │ │ ├── Icon-App-76x76@2x.png │ │ └── Icon-App-83.5x83.5@2x.png │ └── LaunchImage.imageset │ │ ├── Contents.json │ │ ├── LaunchImage.png │ │ ├── LaunchImage@2x.png │ │ ├── LaunchImage@3x.png │ │ └── README.md │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── Info.plist │ └── Runner-Bridging-Header.h ├── lib ├── core │ ├── constant │ │ ├── colors.dart │ │ └── string.dart │ ├── datasource │ │ ├── devs_datasource.dart │ │ ├── local │ │ │ └── devs_local_datasource.dart │ │ ├── memory │ │ │ └── devs_memory_datasource.dart │ │ └── remote │ │ │ └── .gitkeep │ ├── models │ │ └── dev.dart │ ├── repositories │ │ └── devs_repository.dart │ ├── theme │ │ └── colors.dart │ └── widgets │ │ └── components │ │ ├── main_filters.dart │ │ └── search_bar.dart ├── features │ ├── dashboard │ │ ├── dashboard_model.dart │ │ └── dashboard_page.dart │ ├── devboard │ │ ├── devboard_model.dart │ │ ├── devboard_page.dart │ │ └── devs │ │ │ └── devs_list.dart │ └── jobs │ │ └── jobs_page.dart ├── main.dart └── utils │ └── utils.dart ├── macos ├── .gitignore ├── Flutter │ ├── Flutter-Debug.xcconfig │ ├── Flutter-Release.xcconfig │ └── GeneratedPluginRegistrant.swift ├── Podfile ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── Runner │ ├── AppDelegate.swift │ ├── Assets.xcassets │ └── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── app_icon_1024.png │ │ ├── app_icon_128.png │ │ ├── app_icon_16.png │ │ ├── app_icon_256.png │ │ ├── app_icon_32.png │ │ ├── app_icon_512.png │ │ └── app_icon_64.png │ ├── Base.lproj │ └── MainMenu.xib │ ├── Configs │ ├── AppInfo.xcconfig │ ├── Debug.xcconfig │ ├── Release.xcconfig │ └── Warnings.xcconfig │ ├── DebugProfile.entitlements │ ├── Info.plist │ ├── MainFlutterWindow.swift │ └── Release.entitlements ├── main.dart.js ├── pubspec.lock ├── pubspec.yaml └── web ├── favicon.png ├── icons ├── Icon-192.png └── Icon-512.png ├── index.html └── manifest.json /.all-contributorsrc: -------------------------------------------------------------------------------- 1 | { 2 | "files": [ 3 | "README.md" 4 | ], 5 | "imageSize": 100, 6 | "commit": false, 7 | "contributors": [ 8 | { 9 | "login": "joshuadeguzman", 10 | "name": "Joshua de Guzman", 11 | "avatar_url": "https://avatars.githubusercontent.com/u/20706361?v=4", 12 | "profile": "http://joshuamdeguzman.com", 13 | "contributions": [ 14 | "code", 15 | "content", 16 | "data", 17 | "mentoring", 18 | "bug" 19 | ] 20 | }, 21 | { 22 | "login": "digitaljoni", 23 | "name": "digitaljoni", 24 | "avatar_url": "https://avatars.githubusercontent.com/u/2360639?v=4", 25 | "profile": "https://digitaljoni.com", 26 | "contributions": [ 27 | "content", 28 | "mentoring" 29 | ] 30 | }, 31 | { 32 | "login": "ram231", 33 | "name": "Vince Ramces Oliveros", 34 | "avatar_url": "https://avatars.githubusercontent.com/u/10434746?v=4", 35 | "profile": "https://clueless.netlify.com", 36 | "contributions": [ 37 | "code", 38 | "content", 39 | "bug" 40 | ] 41 | }, 42 | { 43 | "login": "MedwinCorreo", 44 | "name": "Medwin Correo", 45 | "avatar_url": "https://avatars.githubusercontent.com/u/16618565?v=4", 46 | "profile": "https://github.com/MedwinCorreo", 47 | "contributions": [ 48 | "content" 49 | ] 50 | }, 51 | { 52 | "login": "LordKarlito", 53 | "name": "Karlo Barcelona", 54 | "avatar_url": "https://avatars.githubusercontent.com/u/37783804?v=4", 55 | "profile": "https://github.com/LordKarlito", 56 | "contributions": [ 57 | "content" 58 | ] 59 | }, 60 | { 61 | "login": "zamvar", 62 | "name": "Barrientos Mark Zamie", 63 | "avatar_url": "https://avatars.githubusercontent.com/u/20177817?v=4", 64 | "profile": "http://markbarrientos.com", 65 | "contributions": [ 66 | "content" 67 | ] 68 | }, 69 | { 70 | "login": "theshook", 71 | "name": "Haji Fernandez", 72 | "avatar_url": "https://avatars.githubusercontent.com/u/33286537?v=4", 73 | "profile": "https://github.com/theshook", 74 | "contributions": [ 75 | "content" 76 | ] 77 | }, 78 | { 79 | "login": "nixdorgu", 80 | "name": "Anike Nicole Dorgu", 81 | "avatar_url": "https://avatars.githubusercontent.com/u/56599165?v=4", 82 | "profile": "https://gitlab.com/nixdorgu", 83 | "contributions": [ 84 | "content", 85 | "doc" 86 | ] 87 | }, 88 | { 89 | "login": "Celesica", 90 | "name": "Celesica", 91 | "avatar_url": "https://avatars.githubusercontent.com/u/10039521?v=4", 92 | "profile": "https://github.com/Celesica", 93 | "contributions": [ 94 | "content" 95 | ] 96 | }, 97 | { 98 | "login": "keanallen", 99 | "name": "Kean Allen Imam", 100 | "avatar_url": "https://avatars.githubusercontent.com/u/45480782?v=4", 101 | "profile": "https://github.com/keanallen", 102 | "contributions": [ 103 | "content" 104 | ] 105 | }, 106 | { 107 | "login": "moshOntong-IT", 108 | "name": "Muslimin Ontong", 109 | "avatar_url": "https://avatars.githubusercontent.com/u/57244338?v=4", 110 | "profile": "https://github.com/moshOntong-IT", 111 | "contributions": [ 112 | "content" 113 | ] 114 | }, 115 | { 116 | "login": "ronealdenila", 117 | "name": "Roneal Denila", 118 | "avatar_url": "https://avatars.githubusercontent.com/u/36373505?v=4", 119 | "profile": "https://github.com/ronealdenila", 120 | "contributions": [ 121 | "content" 122 | ] 123 | }, 124 | { 125 | "login": "felixjeromedelafuente", 126 | "name": "Felix Jerome Dela Fuente", 127 | "avatar_url": "https://avatars.githubusercontent.com/u/51954937?v=4", 128 | "profile": "https://www.linkedin.com/in/felixjerome-delafuente/", 129 | "contributions": [ 130 | "content" 131 | ] 132 | }, 133 | { 134 | "login": "charlzmagno", 135 | "name": "charlzmagno", 136 | "avatar_url": "https://avatars.githubusercontent.com/u/78673201?v=4", 137 | "profile": "https://github.com/charlzmagno", 138 | "contributions": [ 139 | "content" 140 | ] 141 | }, 142 | { 143 | "login": "96RadhikaJadhav", 144 | "name": "Radhika", 145 | "avatar_url": "https://avatars.githubusercontent.com/u/56536997?v=4", 146 | "profile": "https://github.com/96RadhikaJadhav", 147 | "contributions": [ 148 | "content", 149 | "doc" 150 | ] 151 | }, 152 | { 153 | "login": "Jansalvador1445", 154 | "name": "Jan Salvador Sebastian", 155 | "avatar_url": "https://avatars.githubusercontent.com/u/31539687?v=4", 156 | "profile": "https://www.linkedin.com/in/jansalvador1445/", 157 | "contributions": [ 158 | "content", 159 | "mentoring", 160 | "code", 161 | "bug" 162 | ] 163 | }, 164 | { 165 | "login": "mikagura12", 166 | "name": "KarlJan Reginaldo", 167 | "avatar_url": "https://avatars.githubusercontent.com/u/74361344?v=4", 168 | "profile": "https://github.com/mikagura12", 169 | "contributions": [ 170 | "content" 171 | ] 172 | }, 173 | { 174 | "login": "Eastly1997", 175 | "name": "Eastly1997", 176 | "avatar_url": "https://avatars.githubusercontent.com/u/76993312?v=4", 177 | "profile": "https://github.com/Eastly1997", 178 | "contributions": [ 179 | "content" 180 | ] 181 | }, 182 | { 183 | "login": "mountaintew", 184 | "name": "Lester Araña", 185 | "avatar_url": "https://avatars.githubusercontent.com/u/32102302?v=4", 186 | "profile": "https://github.com/mountaintew", 187 | "contributions": [ 188 | "content" 189 | ] 190 | }, 191 | { 192 | "login": "Lorns15", 193 | "name": "Lorns15", 194 | "avatar_url": "https://avatars.githubusercontent.com/u/39731070?v=4", 195 | "profile": "https://github.com/Lorns15", 196 | "contributions": [ 197 | "content", 198 | "code", 199 | "design" 200 | ] 201 | }, 202 | { 203 | "login": "0wzZZzz6", 204 | "name": "janfrncs", 205 | "avatar_url": "https://avatars.githubusercontent.com/u/11011672?v=4", 206 | "profile": "https://github.com/0wzZZzz6", 207 | "contributions": [ 208 | "content" 209 | ] 210 | }, 211 | { 212 | "login": "artdev-hash", 213 | "name": "Kim Arthur Lorenzo", 214 | "avatar_url": "https://avatars.githubusercontent.com/u/73451368?v=4", 215 | "profile": "https://github.com/artdev-hash", 216 | "contributions": [ 217 | "content" 218 | ] 219 | }, 220 | { 221 | "login": "mgcarpizo", 222 | "name": "mgcarpizo", 223 | "avatar_url": "https://avatars.githubusercontent.com/u/5284230?v=4", 224 | "profile": "https://github.com/mgcarpizo", 225 | "contributions": [ 226 | "content" 227 | ] 228 | }, 229 | { 230 | "login": "zopagaduanjr", 231 | "name": "Zaldy Pagaduan Jr.", 232 | "avatar_url": "https://avatars.githubusercontent.com/u/38291023?v=4", 233 | "profile": "https://github.com/zopagaduanjr", 234 | "contributions": [ 235 | "content" 236 | ] 237 | }, 238 | { 239 | "login": "Sherwyne", 240 | "name": "Sherwyne", 241 | "avatar_url": "https://avatars.githubusercontent.com/u/10194728?v=4", 242 | "profile": "https://github.com/Sherwyne", 243 | "contributions": [ 244 | "content" 245 | ] 246 | }, 247 | { 248 | "login": "EruelUrsua", 249 | "name": "EruelUrsua", 250 | "avatar_url": "https://avatars.githubusercontent.com/u/44109496?v=4", 251 | "profile": "https://github.com/EruelUrsua", 252 | "contributions": [ 253 | "content" 254 | ] 255 | }, 256 | { 257 | "login": "beRoller", 258 | "name": "Ca", 259 | "avatar_url": "https://avatars.githubusercontent.com/u/14256208?v=4", 260 | "profile": "https://github.com/beRoller", 261 | "contributions": [ 262 | "content" 263 | ] 264 | }, 265 | { 266 | "login": "Jeofferson", 267 | "name": "Jeofferson Dela Peña", 268 | "avatar_url": "https://avatars.githubusercontent.com/u/52815332?v=4", 269 | "profile": "http://jeofferson.github.io", 270 | "contributions": [ 271 | "content" 272 | ] 273 | }, 274 | { 275 | "login": "CodePhilanthropist", 276 | "name": "Rian", 277 | "avatar_url": "https://avatars.githubusercontent.com/u/43643225?v=4", 278 | "profile": "http://rianreybarriga.ml", 279 | "contributions": [ 280 | "content" 281 | ] 282 | }, 283 | { 284 | "login": "RaineHolgado", 285 | "name": "RaineHolgado", 286 | "avatar_url": "https://avatars.githubusercontent.com/u/55817512?v=4", 287 | "profile": "https://github.com/RaineHolgado", 288 | "contributions": [ 289 | "content" 290 | ] 291 | }, 292 | { 293 | "login": "zenrabanes", 294 | "name": "Zen Rabanes", 295 | "avatar_url": "https://avatars.githubusercontent.com/u/41992139?v=4", 296 | "profile": "https://github.com/zenrabanes", 297 | "contributions": [ 298 | "content" 299 | ] 300 | }, 301 | { 302 | "login": "oppatrickk", 303 | "name": "John Patrick Prieto", 304 | "avatar_url": "https://avatars.githubusercontent.com/u/70645552?v=4", 305 | "profile": "https://github.com/oppatrickk", 306 | "contributions": [ 307 | "content" 308 | ] 309 | }, 310 | { 311 | "login": "kvntzn", 312 | "name": "Kevin Tuazon", 313 | "avatar_url": "https://avatars.githubusercontent.com/u/29770932?v=4", 314 | "profile": "http://kvntzn.github.io", 315 | "contributions": [ 316 | "content" 317 | ] 318 | }, 319 | { 320 | "login": "kusman28", 321 | "name": "K", 322 | "avatar_url": "https://avatars.githubusercontent.com/u/40085614?v=4", 323 | "profile": "https://kusman28.github.io/", 324 | "contributions": [ 325 | "content" 326 | ] 327 | }, 328 | { 329 | "login": "lesteroyal", 330 | "name": "Bern Lester Givertas", 331 | "avatar_url": "https://avatars.githubusercontent.com/u/52517887?v=4", 332 | "profile": "http://null", 333 | "contributions": [ 334 | "content" 335 | ] 336 | }, 337 | { 338 | "login": "roycechua23", 339 | "name": "Royce", 340 | "avatar_url": "https://avatars.githubusercontent.com/u/25720149?v=4", 341 | "profile": "https://www.linkedin.com/in/royce-chua-7b213375/", 342 | "contributions": [ 343 | "content" 344 | ] 345 | }, 346 | { 347 | "login": "lidaniel5", 348 | "name": "lidaniel5", 349 | "avatar_url": "https://avatars.githubusercontent.com/u/5171551?v=4", 350 | "profile": "https://github.com/lidaniel5", 351 | "contributions": [ 352 | "content" 353 | ] 354 | }, 355 | { 356 | "login": "binos30", 357 | "name": "Venus Lumanglas", 358 | "avatar_url": "https://avatars.githubusercontent.com/u/48664139?v=4", 359 | "profile": "https://binos30.github.io", 360 | "contributions": [ 361 | "content" 362 | ] 363 | }, 364 | { 365 | "login": "shadowprend", 366 | "name": "Jan Dranreb Balangue", 367 | "avatar_url": "https://avatars.githubusercontent.com/u/66426172?v=4", 368 | "profile": "https://github.com/shadowprend", 369 | "contributions": [ 370 | "content" 371 | ] 372 | }, 373 | { 374 | "login": "MapleSyyrup", 375 | "name": "Portia Bumanlag", 376 | "avatar_url": "https://avatars.githubusercontent.com/u/74462760?v=4", 377 | "profile": "https://github.com/MapleSyyrup", 378 | "contributions": [ 379 | "content" 380 | ] 381 | }, 382 | { 383 | "login": "Ragnov", 384 | "name": "Vincent", 385 | "avatar_url": "https://avatars.githubusercontent.com/u/59752567?v=4", 386 | "profile": "https://github.com/Ragnov", 387 | "contributions": [ 388 | "content" 389 | ] 390 | }, 391 | { 392 | "login": "jose-bamboo", 393 | "name": "Jose Jaime Bisuña", 394 | "avatar_url": "https://avatars.githubusercontent.com/u/51989563?v=4", 395 | "profile": "https://bisunajaime-portfolio.netlify.app", 396 | "contributions": [ 397 | "content", 398 | "design", 399 | "code" 400 | ] 401 | }, 402 | { 403 | "login": "Ghost-017", 404 | "name": "Darryl Llanura", 405 | "avatar_url": "https://avatars.githubusercontent.com/u/31908292?v=4", 406 | "profile": "https://github.com/Ghost-017", 407 | "contributions": [ 408 | "content" 409 | ] 410 | }, 411 | { 412 | "login": "Ipancho", 413 | "name": "Ipancho", 414 | "avatar_url": "https://avatars.githubusercontent.com/u/75502259?v=4", 415 | "profile": "https://github.com/ipancho", 416 | "contributions": [ 417 | "content" 418 | ] 419 | }, 420 | { 421 | "login": "Kathorsiii", 422 | "name": "Kathorsiii", 423 | "avatar_url": "https://avatars.githubusercontent.com/u/55967594?v=4", 424 | "profile": "https://github.com/Kathorsiii", 425 | "contributions": [ 426 | "content" 427 | ] 428 | }, 429 | { 430 | "login": "jedau", 431 | "name": "Jed Aureus Gonzales", 432 | "avatar_url": "https://avatars.githubusercontent.com/u/4092668?v=4", 433 | "profile": "https://github.com/jedau", 434 | "contributions": [ 435 | "content" 436 | ] 437 | }, 438 | { 439 | "login": "OliverRhyme", 440 | "name": "Oliver Rhyme Guibone Añasco", 441 | "avatar_url": "https://avatars.githubusercontent.com/u/35908542?v=4", 442 | "profile": "https://github.com/OliverRhyme", 443 | "contributions": [ 444 | "content", 445 | "code", 446 | "bug" 447 | ] 448 | }, 449 | { 450 | "login": "tanmher", 451 | "name": "Mher Tan", 452 | "avatar_url": "https://avatars.githubusercontent.com/u/52248217?v=4", 453 | "profile": "https://github.com/tanmher", 454 | "contributions": [ 455 | "content" 456 | ] 457 | }, 458 | { 459 | "login": "rytzi", 460 | "name": "Ritzi April Lontoc", 461 | "avatar_url": "https://avatars.githubusercontent.com/u/65063194?v=4", 462 | "profile": "https://github.com/rytzi", 463 | "contributions": [ 464 | "content" 465 | ] 466 | }, 467 | { 468 | "login": "boringdeveloper", 469 | "name": "Nickr", 470 | "avatar_url": "https://avatars.githubusercontent.com/u/21273958?v=4", 471 | "profile": "https://github.com/boringdeveloper", 472 | "contributions": [ 473 | "content" 474 | ] 475 | }, 476 | { 477 | "login": "JackofAllTradesDev", 478 | "name": "Jaymon Rivera", 479 | "avatar_url": "https://avatars.githubusercontent.com/u/40779851?v=4", 480 | "profile": "https://github.com/JackofAllTradesDev", 481 | "contributions": [ 482 | "content" 483 | ] 484 | }, 485 | { 486 | "login": "Zacharias02", 487 | "name": "John Lester D. Necesito", 488 | "avatar_url": "https://avatars.githubusercontent.com/u/52057825?v=4", 489 | "profile": "https://github.com/Zacharias02", 490 | "contributions": [ 491 | "content" 492 | ] 493 | }, 494 | { 495 | "login": "paulcedo", 496 | "name": "Kuya False", 497 | "avatar_url": "https://avatars.githubusercontent.com/u/8663669?v=4", 498 | "profile": "https://paulcedo.com", 499 | "contributions": [ 500 | "content" 501 | ] 502 | }, 503 | { 504 | "login": "myromr", 505 | "name": "Romar Marcos", 506 | "avatar_url": "https://avatars.githubusercontent.com/u/43197039?v=4", 507 | "profile": "https://github.com/myromr", 508 | "contributions": [ 509 | "content" 510 | ] 511 | }, 512 | { 513 | "login": "ryansolis", 514 | "name": "Ryan Solis", 515 | "avatar_url": "https://avatars.githubusercontent.com/u/61523822?v=4", 516 | "profile": "https://github.com/ryansolis", 517 | "contributions": [ 518 | "content" 519 | ] 520 | } 521 | ], 522 | "contributorsPerLine": 7, 523 | "projectName": "devs", 524 | "projectOwner": "flutterph", 525 | "repoType": "github", 526 | "repoHost": "https://github.com", 527 | "skipCi": true 528 | } 529 | -------------------------------------------------------------------------------- /.fvm/fvm_config.json: -------------------------------------------------------------------------------- 1 | {"flutterSdkVersion":"master"} -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: 'Type: Bug' 6 | assignees: '' 7 | 8 | --- 9 | 10 | ## Describe the bug 11 | A clear and concise description of what the bug is. 12 | 13 | ## To Reproduce 14 | Steps to reproduce the behavior: 15 | 1. 16 | 2. 17 | 3. 18 | 4. 19 | 20 | ## Expected behavior 21 | A clear and concise description of what you expected to happen. 22 | 23 | ## Logs 24 | If applicable, add logs to help explain your problem (e.g. the error message and/or exception traceback). 25 | 26 | ## Environment (please complete the following information): 27 | - OS: 28 | - Browser: 29 | 30 | ## Additional context 31 | Add any other context about the problem here. 32 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature Request 💡 3 | 4 | about: Suggest a new idea for the project. 5 | 6 | title: '[feat] ' 7 | 8 | labels: enhancement 9 | --- 10 | 11 | ## Feature Request 12 | 13 | 22 | 23 | ### Summary 24 | 25 | 32 | 33 | ### Solution 34 | 35 | 39 | 40 | 41 | 44 | -------------------------------------------------------------------------------- /.github/PR_template.md: -------------------------------------------------------------------------------- 1 | #### Issue Number 2 | ISSUE # 3 | 7 | 8 | #### Describe the changes you've made 9 | A clear and concise description of what you have done to successfully close your assigned issue. Any new files? or anything you feel to let us know! 10 | 11 | #### Describe if there is any unusual behaviour of your code(Write `NA` if there isn't) 12 | A clear and concise description of it. 13 | 14 | #### Additional context (OPTIONAL) 15 | Add any other context or screenshots about the feature request here. 16 | 17 | #### Test plan (OPTIONAL) 18 | A good test plan should give instructions that someone else can easily follow. 19 | How someone can test your code? 20 | 21 | #### Checklist 22 | 26 | - [ ] I have added my name in the contributors list at the end of README.md file. 27 | - [ ] My code follows the code style of this project. 28 | - [ ] My change requires a change to the documentation. 29 | - [ ] I have updated the documentation accordingly. 30 | - [ ] I have added tests to cover my changes. 31 | - [ ] All new and existing tests passed. 32 | - [ ] The title of my pull request is a short description of the requested changes. 33 | - [ ] Open Source Program names(OPTIONAL: If you participated in any open-source program then please mention the program name here) 34 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy Flutter Website 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | 7 | jobs: 8 | build: 9 | name: Deploy Website 10 | runs-on: ubuntu-latest 11 | env: 12 | my_secret: ${{secrets.GH_DEPLOY}} 13 | steps: 14 | - name: Checkout 🛎️ 15 | uses: actions/checkout@v2 16 | - uses: subosito/flutter-action@v1 17 | with: 18 | channel: beta 19 | - run: flutter config --enable-web 20 | - run: flutter pub get 21 | - run: flutter build web 22 | - name: Build Artifact 🔧 23 | uses: actions/upload-artifact@master 24 | with: 25 | name: web-artifact 26 | path: build/web 27 | - name: Copy CNAME 28 | uses: canastro/copy-file-action@master 29 | with: 30 | source: CNAME 31 | target: "test-a.txt" 32 | - name: Download Artifact ⬇️ 33 | uses: actions/download-artifact@master 34 | with: 35 | name: web-artifact 36 | - name: Change working directory 37 | run: ls -R 38 | working-directory: ./web 39 | - name: Deploy 🚀 40 | run: | 41 | cd build/web 42 | git init 43 | git config --global user.email joshua@joshuamdeguzman.com 44 | git config --global user.name joshuadeguzman 45 | git remote add origin https://github.com/flutterph/devs.git 46 | git fetch --all 47 | git checkout origin/master CNAME 48 | git remote remove origin 49 | git remote add origin https://${{secrets.GH_DEPLOY}}@github.com/flutterph/devs.git 50 | git checkout -b gh-pages 51 | git add --all 52 | git commit -m "Release new version" 53 | git push origin gh-pages -f 54 | -------------------------------------------------------------------------------- /.github/workflows/rebase.yml: -------------------------------------------------------------------------------- 1 | name: Automatic Rebase 2 | on: 3 | issue_comment: 4 | types: [created] 5 | jobs: 6 | rebase: 7 | name: Rebase 8 | if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/rebase') 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout the latest code 12 | uses: actions/checkout@v2 13 | with: 14 | token: ${{ secrets.GITHUB_TOKEN }} 15 | fetch-depth: 0 # otherwise, you will fail to push refs to dest repo 16 | - name: Automatic Rebase 17 | uses: cirrus-actions/rebase@1.4 18 | env: 19 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | .vscode/ 12 | .fvm/ 13 | # IntelliJ related 14 | *.iml 15 | *.ipr 16 | *.iws 17 | .idea/ 18 | 19 | # The .vscode folder contains launch configuration and tasks you configure in 20 | # VS Code which you may wish to be included in version control, so this line 21 | # is commented out by default. 22 | .vscode/ 23 | 24 | # Flutter/Dart/Pub related 25 | **/doc/api/ 26 | **/ios/Flutter/.last_build_id 27 | .dart_tool/ 28 | .flutter-plugins 29 | .flutter-plugins-dependencies 30 | .packages 31 | .pub-cache/ 32 | .pub/ 33 | /build/ 34 | 35 | # Web related 36 | lib/generated_plugin_registrant.dart 37 | 38 | # Symbolication related 39 | app.*.symbols 40 | 41 | # Obfuscation related 42 | app.*.map.json 43 | *.lock 44 | -------------------------------------------------------------------------------- /.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: 1aafb3a8b9b0c36241c5f5b34ee914770f015818 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | devs.flutter.ph -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | When contributing to this repository, please first discuss the change you wish to make via issue, 4 | email, or any other method with the owners of this repository before making a change. 5 | 6 | Please note we have a code of conduct, please follow it in all your interactions with the project. 7 | 8 | ## Pull Request Process 9 | 10 | 1. Ensure any install or build dependencies are removed before the end of the layer when doing a 11 | build. 12 | 2. Update the README.md with details of changes to the interface, this includes new environment 13 | variables, exposed ports, useful file locations and container parameters. 14 | 3. Increase the version numbers in any examples files and the README.md to the new version that this 15 | Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/). 16 | 4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you 17 | do not have permission to do that, you may request the second reviewer to merge it for you. 18 | 19 | ## Code of Conduct 20 | 21 | ### Our Pledge 22 | 23 | In the interest of fostering an open and welcoming environment, we as 24 | contributors and maintainers pledge to making participation in our project and 25 | our community a harassment-free experience for everyone, regardless of age, body 26 | size, disability, ethnicity, gender identity and expression, level of experience, 27 | nationality, personal appearance, race, religion, or sexual identity and 28 | orientation. 29 | 30 | ### Our Standards 31 | 32 | Examples of behavior that contributes to creating a positive environment 33 | include: 34 | 35 | * Using welcoming and inclusive language 36 | * Being respectful of differing viewpoints and experiences 37 | * Gracefully accepting constructive criticism 38 | * Focusing on what is best for the community 39 | * Showing empathy towards other community members 40 | 41 | Examples of unacceptable behavior by participants include: 42 | 43 | * The use of sexualized language or imagery and unwelcome sexual attention or 44 | advances 45 | * Trolling, insulting/derogatory comments, and personal or political attacks 46 | * Public or private harassment 47 | * Publishing others' private information, such as a physical or electronic 48 | address, without explicit permission 49 | * Other conduct which could reasonably be considered inappropriate in a 50 | professional setting 51 | 52 | ### Our Responsibilities 53 | 54 | Project maintainers are responsible for clarifying the standards of acceptable 55 | behavior and are expected to take appropriate and fair corrective action in 56 | response to any instances of unacceptable behavior. 57 | 58 | Project maintainers have the right and responsibility to remove, edit, or 59 | reject comments, commits, code, wiki edits, issues, and other contributions 60 | that are not aligned to this Code of Conduct, or to ban temporarily or 61 | permanently any contributor for other behaviors that they deem inappropriate, 62 | threatening, offensive, or harmful. 63 | 64 | ### Scope 65 | 66 | This Code of Conduct applies both within project spaces and in public spaces 67 | when an individual is representing the project or its community. Examples of 68 | representing a project or community include using an official project e-mail 69 | address, posting via an official social media account, or acting as an appointed 70 | representative at an online or offline event. Representation of a project may be 71 | further defined and clarified by project maintainers. 72 | 73 | ### Enforcement 74 | 75 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 76 | reported by contacting the project team at [INSERT EMAIL ADDRESS]. All 77 | complaints will be reviewed and investigated and will result in a response that 78 | is deemed necessary and appropriate to the circumstances. The project team is 79 | obligated to maintain confidentiality with regard to the reporter of an incident. 80 | Further details of specific enforcement policies may be posted separately. 81 | 82 | Project maintainers who do not follow or enforce the Code of Conduct in good 83 | faith may face temporary or permanent repercussions as determined by other 84 | members of the project's leadership. 85 | 86 | ### Attribution 87 | 88 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 89 | available at [http://contributor-covenant.org/version/1/4][version] 90 | 91 | [homepage]: http://contributor-covenant.org 92 | [version]: http://contributor-covenant.org/version/1/4/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # devs 2 | 3 | [![All Contributors](https://img.shields.io/badge/all_contributors-54-orange.svg?style=flat-square)](#contributors-) 4 | 5 | 6 | [![style: very good analysis](https://img.shields.io/badge/style-very_good_analysis-B22C89.svg)](https://pub.dev/packages/very_good_analysis) 7 | 8 | ## Setup 9 | 10 | Currently, this DEVS project is using the `master` channel of the Flutter SDK. 11 | 12 | TODO: Migrate to `beta` 13 | 14 | ### Clone the project 15 | 16 | ``` 17 | git clone https://github.com/flutterph/devs/ 18 | ``` 19 | 20 | ### Download dependencies 21 | 22 | Open the project in an IDE or text-editor, then run the ff: 23 | 24 | ``` 25 | cd devs 26 | flutter packages get 27 | ``` 28 | 29 | ### Run the project for web 30 | 31 | ``` 32 | flutter run -d web 33 | ``` 34 | 35 | ### Run the project for mobile 36 | 37 | TODO: Add responsiveness for mobile 38 | 39 | ## Contributing 40 | 41 | ### #30DaysOfFlutter Activies 42 | 43 | #### 1. Add Developer Details (1 Point) 44 | 1. Create an new ticket [here](https://github.com/flutterph/devs/issues/new) 45 | 46 | Title: Add details 47 | 48 | Body (Optional): More details about you 49 | 50 | 2. Fork this repository 51 | 3. Clone (or download) the fork repository on your machine 52 | 4. Create a new branch 53 | 54 | ``` 55 | git checkout -b /your-name 56 | ``` 57 | 58 | 5. Locate and open the file `assets/data/devs.json` 59 | 6. Add your details 60 | 61 | ``` 62 | [ 63 | { 64 | "name": "Joshua", 65 | "roles": ["Software Engineer", "Flutter and Dart GDE"], 66 | "about": "Lorem ipsum", 67 | "username: "joshuamdeguzman", 68 | "socials": { 69 | "twitter": "", 70 | "facebook": "", 71 | "linkedin": "" 72 | } 73 | }, 74 | { 75 | "name": "Jan Salvador S. Sebastian", 76 | "roles": ["Software Engineer", "Flutter"], 77 | "about": "Lorem ipsum", 78 | "username: "JanSalvador1445", 79 | "socials": { 80 | "twitter": "", 81 | "facebook": "", 82 | "linkedin": "" 83 | } 84 | }, 85 | ... 86 | // Add here 87 | ] 88 | ``` 89 | 90 | 7. Commit changes 91 | 92 | Add your name 93 | 94 | ``` 95 | git commit -m "Add details" 96 | ``` 97 | 98 | 8. Push the changes 99 | 100 | ``` 101 | git push origin -u /your-name 102 | ``` 103 | 104 | 9. On Github, open the fork repository 105 | 106 | 10. Locate the branch 107 | 108 | 11. Create a pull request 109 | 110 | 12. Submit pull request for review 111 | 112 | ### General Contributing 113 | 114 | #### 1. Feature Development 115 | 116 | 1. Comment on the ticket you would like to work on 117 | 2. Outline your proposed solution 118 | 3. Get feedback from maintainers 119 | 4. Work on the feature 120 | 5. Create a pull request 121 | 6. Submit pull request for review 122 | 123 | #### 2. Fixing bugs 124 | 125 | 1. Comment on the ticket you would like to work on 126 | 2. Outline your proposed solution 127 | 3. Get feedback from maintainers 128 | 4. Work on the bug fix 129 | 5. Create a pull request 130 | 6. Submit pull request for review 131 | 132 | 133 | #### 3. Filling bugs 134 | 135 | #### 4. Feature requests 136 | 137 | 1. Create a new [issue](https://github.com/flutterph/devs/issues) using the 'Feature Request 💡' template 138 | 2. Fill in the requested information and feel free to add headers if there's anything you think we missed! 139 | 3. Submit the new issue 140 | 141 | 142 | For questions or suggestions, either create a ticket or send us an email at team@flutter.ph. 143 | 144 | 145 | More on [Contributing](https://github.com/flutterph/devs/blob/master/README.md). 146 | 147 | ## Commands 148 | 149 | ### Before creating Pull Request 150 | 151 | Format files 152 | 153 | ``` 154 | flutter format --set-exit-if-changed . 155 | ``` 156 | 157 | Analyze files 158 | 159 | ``` 160 | flutter analyze . 161 | ``` 162 | 163 | ## Contributors ✨ 164 | 165 | Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 |

Joshua de Guzman

💻 🖋 🔣 🧑‍🏫 🐛

digitaljoni

🖋 🧑‍🏫

Vince Ramces Oliveros

💻 🖋 🐛

Medwin Correo

🖋

Karlo Barcelona

🖋

Barrientos Mark Zamie

🖋

Haji Fernandez

🖋

Anike Nicole Dorgu

🖋 📖

Celesica

🖋

Kean Allen Imam

🖋

Muslimin Ontong

🖋

Roneal Denila

🖋

Felix Jerome Dela Fuente

🖋

charlzmagno

🖋

Radhika

🖋 📖

Jan Salvador Sebastian

🖋 🧑‍🏫 💻 🐛

KarlJan Reginaldo

🖋

Eastly1997

🖋

Lester Araña

🖋

Lorns15

🖋 💻 🎨

janfrncs

🖋

Kim Arthur Lorenzo

🖋

mgcarpizo

🖋

Zaldy Pagaduan Jr.

🖋

Sherwyne

🖋

EruelUrsua

🖋

Ca

🖋

Jeofferson Dela Peña

🖋

Rian

🖋

RaineHolgado

🖋

Zen Rabanes

🖋

John Patrick Prieto

🖋

Kevin Tuazon

🖋

K

🖋

Bern Lester Givertas

🖋

Royce

🖋

lidaniel5

🖋

Venus Lumanglas

🖋

Jan Dranreb Balangue

🖋

Portia Bumanlag

🖋

Vincent

🖋

Jose Jaime Bisuña

🖋 🎨 💻

Darryl Llanura

🖋

Ipancho

🖋

Kathorsiii

🖋

Jed Aureus Gonzales

🖋

Oliver Rhyme Guibone Añasco

🖋 💻 🐛

Mher Tan

🖋

Ritzi April Lontoc

🖋

Nickr

🖋

Jaymon Rivera

🖋

John Lester D. Necesito

🖋

Kuya False

🖋

Romar Marcos

🖋

Ryan Solis

🖋
243 | 244 | 245 | 246 | 247 | 248 | 249 | This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! 250 | -------------------------------------------------------------------------------- /analysis_options.yml: -------------------------------------------------------------------------------- 1 | analyzer: 2 | 3 | include: package:very_good_analysis/analysis_options.yaml -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | -------------------------------------------------------------------------------- /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 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply plugin: 'kotlin-android' 26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 27 | 28 | android { 29 | compileSdkVersion 29 30 | 31 | sourceSets { 32 | main.java.srcDirs += 'src/main/kotlin' 33 | } 34 | 35 | lintOptions { 36 | disable 'InvalidPackage' 37 | } 38 | 39 | defaultConfig { 40 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 41 | applicationId "io.github.flutterph.devs" 42 | minSdkVersion 16 43 | targetSdkVersion 29 44 | versionCode flutterVersionCode.toInteger() 45 | versionName flutterVersionName 46 | } 47 | 48 | buildTypes { 49 | release { 50 | // TODO: Add your own signing config for the release build. 51 | // Signing with the debug keys for now, so `flutter run --release` works. 52 | signingConfig signingConfigs.debug 53 | } 54 | } 55 | } 56 | 57 | flutter { 58 | source '../..' 59 | } 60 | 61 | dependencies { 62 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 63 | } 64 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 8 | 12 | 19 | 23 | 27 | 32 | 36 | 37 | 38 | 39 | 40 | 41 | 43 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /android/app/src/main/kotlin/io/github/flutterph/devs/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package io.github.flutterph.devs 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/values-night/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.3.50' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:3.5.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.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /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-5.6.2-all.zip 7 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /assets/data/devs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "Joshua", 4 | "roles": [ 5 | "Software Engineer", 6 | "Flutter and Dart GDE" 7 | ], 8 | "about": "Lorem ipsum", 9 | "username": "joshuadeguzman" 10 | }, 11 | { 12 | "name": "Joennie Sindo", 13 | "roles": [ 14 | "Software Engineer", 15 | "Flutter Developer" 16 | ], 17 | "about": "Flutter developer since 2018" 18 | }, 19 | { 20 | "name": "Jan Salvador S. Sebastian", 21 | "roles": [ 22 | "Mobile Engineer", 23 | "Flutter Developer", 24 | "Full Stack Developer" 25 | ], 26 | "about": "Just a ordinary kid.", 27 | "username": "JanSalvador1445", 28 | "socials": { 29 | "twitter": "https://twitter.com/jansalvador1445", 30 | "facebook": "https://www.facebook.com/jansalvador.sebastian.1", 31 | "linkedin": "https://www.linkedin.com/in/jansalvadorsebastian/" 32 | } 33 | }, 34 | { 35 | "name": "Medwin Correo", 36 | "roles": [ 37 | "Freelance Developer", 38 | "Flutter Developer" 39 | ], 40 | "about": "Flutter developer since 2019" 41 | }, 42 | { 43 | "name": "Neil Ruaro", 44 | "roles": [ 45 | "Software Engineer", 46 | "Flutter", 47 | "Python", 48 | "C++" 49 | ], 50 | "about": "A C++, and Flutter Software Developer, Data Analysts with Python, and a Competitive Programmer", 51 | "username": "eRuaro", 52 | "socials": { 53 | "GitHub": "https://github.com/eRuaro", 54 | "linkedin": "https://www.linkedin.com/in/neil-ruaro/", 55 | "facebook": "https://www.facebook.com/neilRawro" 56 | } 57 | }, 58 | { 59 | "name": "Mark Barrientos", 60 | "roles": [ 61 | "Flutter Developer" 62 | ], 63 | "about": "Flutter developer since 2019" 64 | }, 65 | { 66 | "name": "Vince Ramces Oliveros", 67 | "roles": [ 68 | "Flutter Developer" 69 | ], 70 | "about": "Me, Myself, and I" 71 | }, 72 | { 73 | "name": "Roneal John Denila", 74 | "roles": [ 75 | "Flutter Developer" 76 | ], 77 | "about": "Bachelor of Science in Information Technology Student", 78 | "username": "ronealdenila", 79 | "socials": { 80 | "twitter": "https://twitter.com/ronealdenila27", 81 | "facebook": "https://www.facebook.com/ronealdenila/", 82 | "linkedin": "https://www.linkedin.com/in/ronealdenila27/" 83 | } 84 | }, 85 | { 86 | "name": "Hajibar Fernandez", 87 | "roles": [ 88 | "Web Developer", 89 | "Flutter Developer" 90 | ], 91 | "about": "I am Haji 😁" 92 | }, 93 | { 94 | "name": "Karlo Barcelona", 95 | "roles": [ 96 | "Flutter Developer PH Community Member" 97 | ], 98 | "about": "Flutter Gang!", 99 | "username": "LordKarlito" 100 | }, 101 | { 102 | "name": "Kean Allen Imam", 103 | "roles": [ 104 | "Flutter Developer" 105 | ], 106 | "about": "Started Flutter since 2020" 107 | }, 108 | { 109 | "name": "Jazzy Bulacito", 110 | "roles": [ 111 | "Flutter PH Member", 112 | "Flutter Developer" 113 | ], 114 | "about": "Digital Marketing Specialist & Computer Science Student", 115 | "username": "celesica", 116 | "socials": { 117 | "twitter": "https://twitter.com/JazCelesica", 118 | "facebook": "https://www.facebook.com/jazzcelesica", 119 | "linkedin": "" 120 | } 121 | }, 122 | { 123 | "name": "Anike Dorgu", 124 | "roles": [ 125 | "Software Engineering Student", 126 | "Flutter Developer" 127 | ], 128 | "about": "Flutterista-in-training 🤞🏿", 129 | "username": "nixdorgu", 130 | "socials": { 131 | "GitHub": "https://github.com/nixdorgu", 132 | "linkedin": "https://www.linkedin.com/in/anike-nicole-dorgu/", 133 | "facebook": "https://www.facebook.com/nixdorgu" 134 | } 135 | }, 136 | { 137 | "name": "Mosh Ontong", 138 | "roles": [ 139 | "Flutter Developer PH Community Member" 140 | ], 141 | "about": "CODX representative" 142 | }, 143 | { 144 | "name": "Felix Jerome Dela Fuente", 145 | "roles": [ 146 | "Novice Flutter Developer", 147 | "Information Technology Student", 148 | "Web Developer", 149 | "UI/UX Designer" 150 | ], 151 | "about": "Integrating technology and design to create human-centered outcomes.", 152 | "username": "felixjeromedelafuente", 153 | "socials": { 154 | "twitter": "https://twitter.com/fj_delafuente", 155 | "facebook": "https://www.facebook.com/fj.dlfuente", 156 | "linkedin": "linkedin.com/in/felixjerome-delafuente" 157 | } 158 | }, 159 | { 160 | "name": "John Wesley Bodoso", 161 | "roles": [ 162 | "Beginner Flutter Developer", 163 | "Android Developer", 164 | "Awesome Person" 165 | ], 166 | "about": "Learning flutter to become more competitive", 167 | "username": "Eastly1997", 168 | "socials": { 169 | "twitter": "https://twitter.com/JohnBodoso", 170 | "facebook": "https://www.facebook.com/jwbodoso/", 171 | "linkedin": "https://www.linkedin.com/in/john-wesley-bodoso-ba81ab1a4/" 172 | }, 173 | "country_code": "PH", 174 | "skills" : [ 175 | "Unity Game Developer", 176 | "Mobile Developer - Ionic Framework", 177 | "Android Developer(Kotlin & Java)", 178 | "Google Cloud Platform", 179 | "Flutter(Learning)" 180 | ], 181 | "available_for_hire": true 182 | }, 183 | { 184 | "name": "Karl Jan Reginaldo", 185 | "roles": [ 186 | "Flutter Developer PH Community Member", 187 | "Student", 188 | "UX | UI" 189 | ], 190 | "about": "Fluttering since 2020!", 191 | "username": "mikagura12", 192 | "socials": { 193 | "twitter": "https://twitter.com/twentysicksssss/", 194 | "facebook": "https://www.facebook.com/mikagura12/", 195 | "linkedin": "https://www.linkedin.com/in/karl-jan-reginaldo-b227b5204/" 196 | } 197 | }, 198 | { 199 | "name": "Lester Araña", 200 | "roles": [ 201 | "Student", 202 | "Web Developer", 203 | "Flutter Beginner" 204 | ], 205 | "about": "Dazzle Me!", 206 | "username": "mountaintew", 207 | "socials": { 208 | "twitter": "", 209 | "facebook": "https://www.facebook.com/lstrarana", 210 | "linkedin": "https://www.linkedin.com/in/lesterantonio/" 211 | } 212 | }, 213 | { 214 | "name": "Lawrence Roy Quiling", 215 | "roles": [ 216 | "Beginner Flutter Developer", 217 | "Software Engineer" 218 | ], 219 | "about": "Learning Flutter", 220 | "username": "Lorns15", 221 | "socials": { 222 | "twitter": "", 223 | "facebook": "https://www.facebook.com/Lorns15/", 224 | "linkedin": "" 225 | } 226 | }, 227 | { 228 | "name": "Jan Tagadiad", 229 | "roles": [ 230 | "Flutter Developer" 231 | ], 232 | "about": "Flutter Bisaya XD", 233 | "username": "0wzZZzz6", 234 | "socials": { 235 | "twitter": "https://twitter.com/jan99860243", 236 | "facebook": "https://www.facebook.com/0wzzzzz6/", 237 | "linkedin": "" 238 | } 239 | }, 240 | { 241 | "name": "Kim Arthur L. Lorenzo", 242 | "roles": [ 243 | "Flutter Developer PH Community Member" 244 | ], 245 | "about": "Dev / Entrepreneur " 246 | }, 247 | { 248 | "name": "Ma. Grace Q. Carpizo", 249 | "roles": [ 250 | "Flutter Developer PH Community Member" 251 | ], 252 | "about": "Flutter Tinkerer" 253 | }, 254 | { 255 | "name": "Zaldy O. Pagaduan Jr.", 256 | "roles": [ 257 | "Flutter Developer PH Community Member" 258 | ], 259 | "about": "Davaoeño" 260 | }, 261 | { 262 | "name": "Sherwyne Costiniano", 263 | "roles": [ 264 | "Freelance Developer", 265 | "Flutter Developer", 266 | "DevOps" 267 | ], 268 | "about": "Python is my main programming language but I want to be versatile so I'll try Flutter and Dart", 269 | "username": "Sherwyne" 270 | }, 271 | { 272 | "name": "Eruel Francis Ursua", 273 | "roles": [ 274 | "Flutter Developer PH Community Member, Student, Software Developer" 275 | ], 276 | "about": "Fluttering since 2020", 277 | "username": "EruelUrsua", 278 | "socials": { 279 | "twitter": "https://twitter.com/UrsuaEruel", 280 | "facebook": "https://www.facebook.com/eruel.ursua/", 281 | "linkedin": "https://www.linkedin.com/in/eruel-francis-ursua-3521341b7/" 282 | } 283 | }, 284 | { 285 | "name": "Carl Cabahug", 286 | "roles": [ 287 | "Flutter Developer PH Community Member", 288 | "Web Developer", 289 | "Software Developer" 290 | ], 291 | "about": "hello there!\nLets learn something new.✌️", 292 | "username": "CA__💻", 293 | "socials": { 294 | "twitter": "https://twitter.com/10011010100101C", 295 | "facebook": "https://www.facebook.com/1000101010010110001011110101011000010100100101011C/", 296 | "linkedin": "https://www.linkedin.com/in/carl-cabahug-289316126/" 297 | } 298 | }, 299 | { 300 | "name": "Jeofferson Dela Peña", 301 | "roles": [ 302 | "DSC Lead", 303 | "3rd Year BSIT Systems Development", 304 | "Flutter Developer" 305 | ], 306 | "about": "Aspiring Software Engineer" 307 | }, 308 | { 309 | "name": "Rian Barriga", 310 | "roles": [ 311 | "Django", 312 | "Flutter", 313 | "Postgres" 314 | ], 315 | "about": "Flutter is my life Dart is the soul", 316 | "username": "CodePhilanthropist", 317 | "socials": { 318 | "twitter": "https://twitter.com/rian_dropss", 319 | "facebook": "https://www.facebook.com/bidlisiw.sa.adlaws", 320 | "linkedin": "" 321 | } 322 | }, 323 | { 324 | "name": "Raine Dale Holgado", 325 | "roles": [ 326 | "Flutter Developer", 327 | "UX/UI designer" 328 | ], 329 | "about": "Flutter developer since 2019", 330 | "username": "RaineHolgado", 331 | "socials": { 332 | "twitter": "", 333 | "facebook": "", 334 | "linkedin": "https://www.linkedin.com/in/rainedaleholgado/" 335 | } 336 | }, 337 | { 338 | "name": "Zen Rabanes", 339 | "roles": [ 340 | "Software Developer", 341 | "Flutter" 342 | ], 343 | "about": "Coffee guy", 344 | "username": "@zenrabanes", 345 | "socials": { 346 | "twitter": "https://twitter.com/azrabanes", 347 | "facebook": "https://www.facebook.com/zenrabanes/", 348 | "linkedin": "" 349 | } 350 | }, 351 | { 352 | "name": "John Patrick Prieto", 353 | "roles": [ 354 | "Novice Flutter Developer", 355 | "Game Developer", 356 | "Student" 357 | ], 358 | "about": "Computer Science Freshman", 359 | "username": "oppatrickk", 360 | "socials": { 361 | "twitter": "https://twitter.com/oppatrickk", 362 | "facebook": "https://www.facebook.com/prietopat", 363 | "linkedin": "www.linkedin.com/in/john-patrick-prieto" 364 | } 365 | }, 366 | { 367 | "name": "Kevin Tuazon", 368 | "roles": [ 369 | "Software Engineer" 370 | ], 371 | "about": "Dev" 372 | }, 373 | { 374 | "name": "Khalid L. Usman", 375 | "roles": [ 376 | "Flutter Developer PH Community Member" 377 | ], 378 | "about": "Dev" 379 | }, 380 | { 381 | "name": "Bern Lester Givertas", 382 | "roles": [ 383 | "Beginner Flutter Developer", 384 | "Computer Engineer", 385 | "Android Developer" 386 | ], 387 | "about": "Technology Enthusiast", 388 | "username": "lesteroyal" 389 | }, 390 | { 391 | "name": "Royce B. Chua", 392 | "roles": [ 393 | "Flutter Developer PH Community Member", 394 | "Aspiring Flutter Developer", 395 | "React Native Mobile APP Developer", 396 | "Blogger" 397 | ], 398 | "about": "I'm currently a React Native Developer but I also want to explore and build apps with Flutter." 399 | }, 400 | { 401 | "name": "Lidaniel Duhan Cinco", 402 | "roles": [ 403 | "Flutter Developer", 404 | "Full Stack Developer", 405 | "PHP Developer" 406 | ], 407 | "about": "Web Dev" 408 | }, 409 | { 410 | "name": "Venus Lumanglas", 411 | "roles": [ 412 | "Web Developer", 413 | "Flutter Developer" 414 | ], 415 | "about": "Interested in devising a better problem-solving method for challenging tasks", 416 | "username": "binos30" 417 | }, 418 | { 419 | "name": "Jan Dranreb Balangue", 420 | "roles": [ 421 | "Aspiring Flutter Developer" 422 | ], 423 | "about": "Dev", 424 | "username": "shadowprend15" 425 | }, 426 | { 427 | "name": "Portia Bumanlag", 428 | "roles": [ 429 | "Accountant", 430 | "Flutter Developer" 431 | ], 432 | "about": "Aspiring Flutter Developer", 433 | "username": "MapleSyyrup", 434 | "socials": { 435 | "facebook": "https://www.facebook.com/mish.portia", 436 | "linkedin": "https://www.linkedin.com/in/portia-bumanlag-877a8b191/" 437 | } 438 | }, 439 | { 440 | "name": "Jhon Vincent Gupo", 441 | "roles": [ 442 | "Flutter Developer" 443 | ], 444 | "about": "Gotta hot reload my path", 445 | "username": "Ragnov" 446 | }, 447 | { 448 | "name": "Jose Jaime Bisuña", 449 | "roles": [ 450 | "Software Developer" 451 | ], 452 | "about": "Loves learning and baking bread 🍞", 453 | "username": "jose-bamboo" 454 | }, 455 | { 456 | "name": "Annalyn Ayop", 457 | "roles": [ 458 | "Front-end Developer" 459 | ], 460 | "about": "Learning Flutter", 461 | "username": "annalynayop" 462 | }, 463 | { 464 | "name": "Darryl Llanura", 465 | "roles": [ 466 | "Flutter Developer" 467 | ], 468 | "about": "Enjoys making apps with Flutter!", 469 | "username": "Ghost-017", 470 | "socials": { 471 | "twitter": "https://twitter.com/llanura_darryl", 472 | "facebook": "https://www.facebook.com/darryl.llanura.17" 473 | } 474 | }, 475 | { 476 | "name": "Leo Pancho", 477 | "roles": [ 478 | "Software Engineer" 479 | ], 480 | "about": "Flutter Newbie!", 481 | "username": "lpancho", 482 | "socials": { 483 | "linkedin": "https://www.linkedin.com/in/leonard-pancho/" 484 | } 485 | }, 486 | { 487 | "name": "Katherine Therese Marie E. Mariñas", 488 | "roles": [ 489 | "BSITWMA Student" 490 | ], 491 | "about": "Student exploring Flutter", 492 | "username": "Kathorsiii", 493 | "socials": { 494 | "twitter": "", 495 | "facebook": "", 496 | "linkedin": "" 497 | } 498 | }, 499 | { 500 | "name": "Stephen Janseen D. Balo", 501 | "roles": [ 502 | "Flutter Developer", 503 | "Android Developer" 504 | ], 505 | "about": "Has a passion for creating solutions", 506 | "username": "pure-edge", 507 | "socials": { 508 | "facebook": "https://www.facebook.com/pureedge" 509 | } 510 | }, 511 | { 512 | "name": "Jed Aureus Gonzales", 513 | "roles": [ 514 | "Full Stack Developer", 515 | "Senior Software QA" 516 | ], 517 | "about": "Solver of Problems, Teller of Stories", 518 | "username": "jedau", 519 | "socials": { 520 | "twitter": "https://twitter.com/jedau", 521 | "facebook": "https://www.facebook.com/jedaureus.gonzales/", 522 | "linkedin": "https://www.linkedin.com/in/jedaureusgonzales/" 523 | } 524 | }, 525 | { 526 | "name": "Oliver Rhyme G. Añasco", 527 | "roles": [ 528 | "Android Developer", 529 | "Java Developer", 530 | "Flutter Developer", 531 | "Student", 532 | "Hobbyist" 533 | ], 534 | "about": "An Android and Flutter hobbyist!", 535 | "username": "OliverRhyme", 536 | "socials": { 537 | "twitter": "https://twitter.com/Oliver_Rhyme", 538 | "facebook": "https://facebook.com/100003776636938", 539 | "linkedin": "https://www.linkedin.com/in/oliver-rhyme" 540 | } 541 | }, 542 | { 543 | "name": "Mher John F. Tan", 544 | "roles": [ 545 | "Computer Science Student", 546 | "Flutter Developer" 547 | ], 548 | "about": "Flutter Newbie", 549 | "username": "tanmher", 550 | "socials": { 551 | "twitter": "https://www.facebook.com/tanmherjohn", 552 | "facebook": "https://twitter.com/MherTan9", 553 | "linkedin": "https://www.linkedin.com/in/mher-john-tan-2423ab1b5/" 554 | } 555 | }, 556 | { 557 | "name": "Ritzi April A. Lontoc", 558 | "roles": [ 559 | "Computer Engineering Student", 560 | "Flutter Developer" 561 | ], 562 | "about": "Your Future Game-Changer.", 563 | "username": "rytzi", 564 | "socials": { 565 | "twitter": "https://www.facebook.com/100009031232612", 566 | "facebook": "https://twitter.com/ryt_zi" 567 | } 568 | }, 569 | { 570 | "name": "Arlou A. Beloria", 571 | "roles": [ 572 | "Junior Software Engineer", 573 | "Flutter Developer" 574 | ], 575 | "about": "Flutter Enthusiast", 576 | "username": "Arlovzki", 577 | "socials": { 578 | "linkedin": "https://www.linkedin.com/in/arlou-beloria/", 579 | "facebook": "https://web.facebook.com/astonishing.mann" 580 | } 581 | }, { 582 | "name": "Jaymon Rivera", 583 | "roles": [ 584 | "Android & IOS Developer", 585 | "Flutter Developer" 586 | ], 587 | "about": "Idealist hungry for growth sometimes grumpy as hell.", 588 | "username": "GrumpyDev/FormyDearlyDeparted", 589 | "socials": { 590 | "twitter": "https://twitter.com/isemptyobject", 591 | "facebook": "https://www.facebook.com/formydearlydeparted/", 592 | "linkedin": "https://www.linkedin.com/in/jaymon-rivera-379149165/" 593 | } 594 | }, 595 | { 596 | "name": "Nichole John Romero", 597 | "roles": [ 598 | "UI Developer" 599 | ], 600 | "about": "Ionic Developer by day, Flutter Developer at night.", 601 | "username": "boringdeveloper", 602 | "socials": { 603 | "facebook": "https://www.facebook.com/nickrgamer04", 604 | "linkedin": "https://www.linkedin.com/in/nichole-john-talban-romero/" 605 | 606 | } 607 | }, 608 | { 609 | "name": "Paul Cedo", 610 | "roles": [ 611 | "Flutter Developer PH Community Member", 612 | "Full Stack Web Developer" 613 | ], 614 | "about": "Future Flutter Dev Too", 615 | "username": "paulcedo", 616 | "socials": { 617 | "facebook": "https://www.facebook.com/paul.portfolio", 618 | "linkedin": "https://www.linkedin.com/in/paulcedo" 619 | } 620 | }, 621 | { 622 | "name": "John Lester D. Necesito", 623 | "roles": [ 624 | "Software Engineer", 625 | "Flutter Developer", 626 | "Full Stack Developer" 627 | ], 628 | "about": "You can call me 'Mr. Necessity'", 629 | "username": "Zacharias02", 630 | "socials": { 631 | "twitter": "https://twitter.com/Zacharias02", 632 | "facebook": "https://www.facebook.com/Kyrie.Kills.2/", 633 | "linkedin": "https://www.linkedin.com/in/john-lester-4669511aa/" 634 | } 635 | }, 636 | { 637 | "name": "Romar Marcos", 638 | "roles": [ 639 | "Information Technology Student", 640 | "Web Developer", 641 | "Flutter Developer" 642 | ], 643 | "about": "Your friendly flutterista", 644 | "username": "myromr", 645 | "socials": { 646 | "twitter": "https://twitter.com/_myromr", 647 | "facebook": "https://www.facebook.com/myromr/", 648 | "linkedin": "https://www.linkedin.com/in/romar-marcos" 649 | } 650 | }, 651 | { 652 | "name": "Ray Anthony M. Solis", 653 | "roles": [ 654 | "Junior Computer Science Student, CIT University", 655 | "Novice Flutter Developer" 656 | ], 657 | "about": "Passion for creating futuristic solutions", 658 | "username": "ryansolis", 659 | "socials": { 660 | "twitter": "https://twitter.com/RMSolis11", 661 | "facebook": "https://www.facebook.com/rayansolisss" 662 | } 663 | } 664 | ] 665 | -------------------------------------------------------------------------------- /assets/logos/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/assets/logos/logo.png -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | *.mode1v3 2 | *.mode2v3 3 | *.moved-aside 4 | *.pbxuser 5 | *.perspectivev3 6 | **/*sync/ 7 | .sconsign.dblite 8 | .tags* 9 | **/.vagrant/ 10 | **/DerivedData/ 11 | Icon? 12 | **/Pods/ 13 | **/.symlinks/ 14 | profile 15 | xcuserdata 16 | **/.generated/ 17 | Flutter/App.framework 18 | Flutter/Flutter.framework 19 | Flutter/Flutter.podspec 20 | Flutter/Generated.xcconfig 21 | Flutter/app.flx 22 | Flutter/app.zip 23 | Flutter/flutter_assets/ 24 | Flutter/flutter_export_environment.sh 25 | ServiceDefinitions.json 26 | Runner/GeneratedPluginRegistrant.* 27 | 28 | # Exceptions to above rules. 29 | !default.mode1v3 30 | !default.mode2v3 31 | !default.pbxuser 32 | !default.perspectivev3 33 | -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 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 "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 3 | #include "Generated.xcconfig" 4 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 3 | #include "Generated.xcconfig" 4 | -------------------------------------------------------------------------------- /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 | project 'Runner', { 8 | 'Debug' => :debug, 9 | 'Profile' => :release, 10 | 'Release' => :release, 11 | } 12 | 13 | def flutter_root 14 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) 15 | unless File.exist?(generated_xcode_build_settings_path) 16 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" 17 | end 18 | 19 | File.foreach(generated_xcode_build_settings_path) do |line| 20 | matches = line.match(/FLUTTER_ROOT\=(.*)/) 21 | return matches[1].strip if matches 22 | end 23 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" 24 | end 25 | 26 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) 27 | 28 | flutter_ios_podfile_setup 29 | 30 | target 'Runner' do 31 | use_frameworks! 32 | use_modular_headers! 33 | 34 | flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) 35 | end 36 | 37 | post_install do |installer| 38 | installer.pods_project.targets.each do |target| 39 | flutter_additional_ios_build_settings(target) 40 | end 41 | end 42 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 11 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 12 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 13 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 14 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 15 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 16 | /* End PBXBuildFile section */ 17 | 18 | /* Begin PBXCopyFilesBuildPhase section */ 19 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = { 20 | isa = PBXCopyFilesBuildPhase; 21 | buildActionMask = 2147483647; 22 | dstPath = ""; 23 | dstSubfolderSpec = 10; 24 | files = ( 25 | ); 26 | name = "Embed Frameworks"; 27 | runOnlyForDeploymentPostprocessing = 0; 28 | }; 29 | /* End PBXCopyFilesBuildPhase section */ 30 | 31 | /* Begin PBXFileReference section */ 32 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 33 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 34 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 35 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 36 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 37 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 38 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 39 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 40 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 41 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 42 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 43 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 44 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 45 | /* End PBXFileReference section */ 46 | 47 | /* Begin PBXFrameworksBuildPhase section */ 48 | 97C146EB1CF9000F007C117D /* Frameworks */ = { 49 | isa = PBXFrameworksBuildPhase; 50 | buildActionMask = 2147483647; 51 | files = ( 52 | ); 53 | runOnlyForDeploymentPostprocessing = 0; 54 | }; 55 | /* End PBXFrameworksBuildPhase section */ 56 | 57 | /* Begin PBXGroup section */ 58 | 9740EEB11CF90186004384FC /* Flutter */ = { 59 | isa = PBXGroup; 60 | children = ( 61 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 62 | 9740EEB21CF90195004384FC /* Debug.xcconfig */, 63 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 64 | 9740EEB31CF90195004384FC /* Generated.xcconfig */, 65 | ); 66 | name = Flutter; 67 | sourceTree = ""; 68 | }; 69 | 97C146E51CF9000F007C117D = { 70 | isa = PBXGroup; 71 | children = ( 72 | 9740EEB11CF90186004384FC /* Flutter */, 73 | 97C146F01CF9000F007C117D /* Runner */, 74 | 97C146EF1CF9000F007C117D /* Products */, 75 | ); 76 | sourceTree = ""; 77 | }; 78 | 97C146EF1CF9000F007C117D /* Products */ = { 79 | isa = PBXGroup; 80 | children = ( 81 | 97C146EE1CF9000F007C117D /* Runner.app */, 82 | ); 83 | name = Products; 84 | sourceTree = ""; 85 | }; 86 | 97C146F01CF9000F007C117D /* Runner */ = { 87 | isa = PBXGroup; 88 | children = ( 89 | 97C146FA1CF9000F007C117D /* Main.storyboard */, 90 | 97C146FD1CF9000F007C117D /* Assets.xcassets */, 91 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 92 | 97C147021CF9000F007C117D /* Info.plist */, 93 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 94 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 95 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, 96 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, 97 | ); 98 | path = Runner; 99 | sourceTree = ""; 100 | }; 101 | /* End PBXGroup section */ 102 | 103 | /* Begin PBXNativeTarget section */ 104 | 97C146ED1CF9000F007C117D /* Runner */ = { 105 | isa = PBXNativeTarget; 106 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; 107 | buildPhases = ( 108 | 9740EEB61CF901F6004384FC /* Run Script */, 109 | 97C146EA1CF9000F007C117D /* Sources */, 110 | 97C146EB1CF9000F007C117D /* Frameworks */, 111 | 97C146EC1CF9000F007C117D /* Resources */, 112 | 9705A1C41CF9048500538489 /* Embed Frameworks */, 113 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 114 | ); 115 | buildRules = ( 116 | ); 117 | dependencies = ( 118 | ); 119 | name = Runner; 120 | productName = Runner; 121 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */; 122 | productType = "com.apple.product-type.application"; 123 | }; 124 | /* End PBXNativeTarget section */ 125 | 126 | /* Begin PBXProject section */ 127 | 97C146E61CF9000F007C117D /* Project object */ = { 128 | isa = PBXProject; 129 | attributes = { 130 | LastUpgradeCheck = 1020; 131 | ORGANIZATIONNAME = ""; 132 | TargetAttributes = { 133 | 97C146ED1CF9000F007C117D = { 134 | CreatedOnToolsVersion = 7.3.1; 135 | LastSwiftMigration = 1100; 136 | }; 137 | }; 138 | }; 139 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; 140 | compatibilityVersion = "Xcode 9.3"; 141 | developmentRegion = en; 142 | hasScannedForEncodings = 0; 143 | knownRegions = ( 144 | en, 145 | Base, 146 | ); 147 | mainGroup = 97C146E51CF9000F007C117D; 148 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */; 149 | projectDirPath = ""; 150 | projectRoot = ""; 151 | targets = ( 152 | 97C146ED1CF9000F007C117D /* Runner */, 153 | ); 154 | }; 155 | /* End PBXProject section */ 156 | 157 | /* Begin PBXResourcesBuildPhase section */ 158 | 97C146EC1CF9000F007C117D /* Resources */ = { 159 | isa = PBXResourcesBuildPhase; 160 | buildActionMask = 2147483647; 161 | files = ( 162 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 163 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 164 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 165 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 166 | ); 167 | runOnlyForDeploymentPostprocessing = 0; 168 | }; 169 | /* End PBXResourcesBuildPhase section */ 170 | 171 | /* Begin PBXShellScriptBuildPhase section */ 172 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 173 | isa = PBXShellScriptBuildPhase; 174 | buildActionMask = 2147483647; 175 | files = ( 176 | ); 177 | inputPaths = ( 178 | ); 179 | name = "Thin Binary"; 180 | outputPaths = ( 181 | ); 182 | runOnlyForDeploymentPostprocessing = 0; 183 | shellPath = /bin/sh; 184 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; 185 | }; 186 | 9740EEB61CF901F6004384FC /* Run Script */ = { 187 | isa = PBXShellScriptBuildPhase; 188 | buildActionMask = 2147483647; 189 | files = ( 190 | ); 191 | inputPaths = ( 192 | ); 193 | name = "Run Script"; 194 | outputPaths = ( 195 | ); 196 | runOnlyForDeploymentPostprocessing = 0; 197 | shellPath = /bin/sh; 198 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; 199 | }; 200 | /* End PBXShellScriptBuildPhase section */ 201 | 202 | /* Begin PBXSourcesBuildPhase section */ 203 | 97C146EA1CF9000F007C117D /* Sources */ = { 204 | isa = PBXSourcesBuildPhase; 205 | buildActionMask = 2147483647; 206 | files = ( 207 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 208 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 209 | ); 210 | runOnlyForDeploymentPostprocessing = 0; 211 | }; 212 | /* End PBXSourcesBuildPhase section */ 213 | 214 | /* Begin PBXVariantGroup section */ 215 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = { 216 | isa = PBXVariantGroup; 217 | children = ( 218 | 97C146FB1CF9000F007C117D /* Base */, 219 | ); 220 | name = Main.storyboard; 221 | sourceTree = ""; 222 | }; 223 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { 224 | isa = PBXVariantGroup; 225 | children = ( 226 | 97C147001CF9000F007C117D /* Base */, 227 | ); 228 | name = LaunchScreen.storyboard; 229 | sourceTree = ""; 230 | }; 231 | /* End PBXVariantGroup section */ 232 | 233 | /* Begin XCBuildConfiguration section */ 234 | 249021D3217E4FDB00AE95B9 /* Profile */ = { 235 | isa = XCBuildConfiguration; 236 | buildSettings = { 237 | ALWAYS_SEARCH_USER_PATHS = NO; 238 | CLANG_ANALYZER_NONNULL = YES; 239 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 240 | CLANG_CXX_LIBRARY = "libc++"; 241 | CLANG_ENABLE_MODULES = YES; 242 | CLANG_ENABLE_OBJC_ARC = YES; 243 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 244 | CLANG_WARN_BOOL_CONVERSION = YES; 245 | CLANG_WARN_COMMA = YES; 246 | CLANG_WARN_CONSTANT_CONVERSION = YES; 247 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 248 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 249 | CLANG_WARN_EMPTY_BODY = YES; 250 | CLANG_WARN_ENUM_CONVERSION = YES; 251 | CLANG_WARN_INFINITE_RECURSION = YES; 252 | CLANG_WARN_INT_CONVERSION = YES; 253 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 254 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 255 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 256 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 257 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 258 | CLANG_WARN_STRICT_PROTOTYPES = YES; 259 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 260 | CLANG_WARN_UNREACHABLE_CODE = YES; 261 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 262 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 263 | COPY_PHASE_STRIP = NO; 264 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 265 | ENABLE_NS_ASSERTIONS = NO; 266 | ENABLE_STRICT_OBJC_MSGSEND = YES; 267 | GCC_C_LANGUAGE_STANDARD = gnu99; 268 | GCC_NO_COMMON_BLOCKS = YES; 269 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 270 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 271 | GCC_WARN_UNDECLARED_SELECTOR = YES; 272 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 273 | GCC_WARN_UNUSED_FUNCTION = YES; 274 | GCC_WARN_UNUSED_VARIABLE = YES; 275 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 276 | MTL_ENABLE_DEBUG_INFO = NO; 277 | SDKROOT = iphoneos; 278 | SUPPORTED_PLATFORMS = iphoneos; 279 | TARGETED_DEVICE_FAMILY = "1,2"; 280 | VALIDATE_PRODUCT = YES; 281 | }; 282 | name = Profile; 283 | }; 284 | 249021D4217E4FDB00AE95B9 /* Profile */ = { 285 | isa = XCBuildConfiguration; 286 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 287 | buildSettings = { 288 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 289 | CLANG_ENABLE_MODULES = YES; 290 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 291 | ENABLE_BITCODE = NO; 292 | FRAMEWORK_SEARCH_PATHS = ( 293 | "$(inherited)", 294 | "$(PROJECT_DIR)/Flutter", 295 | ); 296 | INFOPLIST_FILE = Runner/Info.plist; 297 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 298 | LIBRARY_SEARCH_PATHS = ( 299 | "$(inherited)", 300 | "$(PROJECT_DIR)/Flutter", 301 | ); 302 | PRODUCT_BUNDLE_IDENTIFIER = io.github.flutterph.devs; 303 | PRODUCT_NAME = "$(TARGET_NAME)"; 304 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 305 | SWIFT_VERSION = 5.0; 306 | VERSIONING_SYSTEM = "apple-generic"; 307 | }; 308 | name = Profile; 309 | }; 310 | 97C147031CF9000F007C117D /* Debug */ = { 311 | isa = XCBuildConfiguration; 312 | buildSettings = { 313 | ALWAYS_SEARCH_USER_PATHS = NO; 314 | CLANG_ANALYZER_NONNULL = YES; 315 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 316 | CLANG_CXX_LIBRARY = "libc++"; 317 | CLANG_ENABLE_MODULES = YES; 318 | CLANG_ENABLE_OBJC_ARC = YES; 319 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 320 | CLANG_WARN_BOOL_CONVERSION = YES; 321 | CLANG_WARN_COMMA = YES; 322 | CLANG_WARN_CONSTANT_CONVERSION = YES; 323 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 324 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 325 | CLANG_WARN_EMPTY_BODY = YES; 326 | CLANG_WARN_ENUM_CONVERSION = YES; 327 | CLANG_WARN_INFINITE_RECURSION = YES; 328 | CLANG_WARN_INT_CONVERSION = YES; 329 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 330 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 331 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 332 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 333 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 334 | CLANG_WARN_STRICT_PROTOTYPES = YES; 335 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 336 | CLANG_WARN_UNREACHABLE_CODE = YES; 337 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 338 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 339 | COPY_PHASE_STRIP = NO; 340 | DEBUG_INFORMATION_FORMAT = dwarf; 341 | ENABLE_STRICT_OBJC_MSGSEND = YES; 342 | ENABLE_TESTABILITY = YES; 343 | GCC_C_LANGUAGE_STANDARD = gnu99; 344 | GCC_DYNAMIC_NO_PIC = NO; 345 | GCC_NO_COMMON_BLOCKS = YES; 346 | GCC_OPTIMIZATION_LEVEL = 0; 347 | GCC_PREPROCESSOR_DEFINITIONS = ( 348 | "DEBUG=1", 349 | "$(inherited)", 350 | ); 351 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 352 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 353 | GCC_WARN_UNDECLARED_SELECTOR = YES; 354 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 355 | GCC_WARN_UNUSED_FUNCTION = YES; 356 | GCC_WARN_UNUSED_VARIABLE = YES; 357 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 358 | MTL_ENABLE_DEBUG_INFO = YES; 359 | ONLY_ACTIVE_ARCH = YES; 360 | SDKROOT = iphoneos; 361 | TARGETED_DEVICE_FAMILY = "1,2"; 362 | }; 363 | name = Debug; 364 | }; 365 | 97C147041CF9000F007C117D /* Release */ = { 366 | isa = XCBuildConfiguration; 367 | buildSettings = { 368 | ALWAYS_SEARCH_USER_PATHS = NO; 369 | CLANG_ANALYZER_NONNULL = YES; 370 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 371 | CLANG_CXX_LIBRARY = "libc++"; 372 | CLANG_ENABLE_MODULES = YES; 373 | CLANG_ENABLE_OBJC_ARC = YES; 374 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 375 | CLANG_WARN_BOOL_CONVERSION = YES; 376 | CLANG_WARN_COMMA = YES; 377 | CLANG_WARN_CONSTANT_CONVERSION = YES; 378 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 379 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 380 | CLANG_WARN_EMPTY_BODY = YES; 381 | CLANG_WARN_ENUM_CONVERSION = YES; 382 | CLANG_WARN_INFINITE_RECURSION = YES; 383 | CLANG_WARN_INT_CONVERSION = YES; 384 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 385 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 386 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 387 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 388 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 389 | CLANG_WARN_STRICT_PROTOTYPES = YES; 390 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 391 | CLANG_WARN_UNREACHABLE_CODE = YES; 392 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 393 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 394 | COPY_PHASE_STRIP = NO; 395 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 396 | ENABLE_NS_ASSERTIONS = NO; 397 | ENABLE_STRICT_OBJC_MSGSEND = YES; 398 | GCC_C_LANGUAGE_STANDARD = gnu99; 399 | GCC_NO_COMMON_BLOCKS = YES; 400 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 401 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 402 | GCC_WARN_UNDECLARED_SELECTOR = YES; 403 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 404 | GCC_WARN_UNUSED_FUNCTION = YES; 405 | GCC_WARN_UNUSED_VARIABLE = YES; 406 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 407 | MTL_ENABLE_DEBUG_INFO = NO; 408 | SDKROOT = iphoneos; 409 | SUPPORTED_PLATFORMS = iphoneos; 410 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 411 | TARGETED_DEVICE_FAMILY = "1,2"; 412 | VALIDATE_PRODUCT = YES; 413 | }; 414 | name = Release; 415 | }; 416 | 97C147061CF9000F007C117D /* Debug */ = { 417 | isa = XCBuildConfiguration; 418 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 419 | buildSettings = { 420 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 421 | CLANG_ENABLE_MODULES = YES; 422 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 423 | ENABLE_BITCODE = NO; 424 | FRAMEWORK_SEARCH_PATHS = ( 425 | "$(inherited)", 426 | "$(PROJECT_DIR)/Flutter", 427 | ); 428 | INFOPLIST_FILE = Runner/Info.plist; 429 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 430 | LIBRARY_SEARCH_PATHS = ( 431 | "$(inherited)", 432 | "$(PROJECT_DIR)/Flutter", 433 | ); 434 | PRODUCT_BUNDLE_IDENTIFIER = io.github.flutterph.devs; 435 | PRODUCT_NAME = "$(TARGET_NAME)"; 436 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 437 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 438 | SWIFT_VERSION = 5.0; 439 | VERSIONING_SYSTEM = "apple-generic"; 440 | }; 441 | name = Debug; 442 | }; 443 | 97C147071CF9000F007C117D /* Release */ = { 444 | isa = XCBuildConfiguration; 445 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 446 | buildSettings = { 447 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 448 | CLANG_ENABLE_MODULES = YES; 449 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 450 | ENABLE_BITCODE = NO; 451 | FRAMEWORK_SEARCH_PATHS = ( 452 | "$(inherited)", 453 | "$(PROJECT_DIR)/Flutter", 454 | ); 455 | INFOPLIST_FILE = Runner/Info.plist; 456 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 457 | LIBRARY_SEARCH_PATHS = ( 458 | "$(inherited)", 459 | "$(PROJECT_DIR)/Flutter", 460 | ); 461 | PRODUCT_BUNDLE_IDENTIFIER = io.github.flutterph.devs; 462 | PRODUCT_NAME = "$(TARGET_NAME)"; 463 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 464 | SWIFT_VERSION = 5.0; 465 | VERSIONING_SYSTEM = "apple-generic"; 466 | }; 467 | name = Release; 468 | }; 469 | /* End XCBuildConfiguration section */ 470 | 471 | /* Begin XCConfigurationList section */ 472 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { 473 | isa = XCConfigurationList; 474 | buildConfigurations = ( 475 | 97C147031CF9000F007C117D /* Debug */, 476 | 97C147041CF9000F007C117D /* Release */, 477 | 249021D3217E4FDB00AE95B9 /* Profile */, 478 | ); 479 | defaultConfigurationIsVisible = 0; 480 | defaultConfigurationName = Release; 481 | }; 482 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { 483 | isa = XCConfigurationList; 484 | buildConfigurations = ( 485 | 97C147061CF9000F007C117D /* Debug */, 486 | 97C147071CF9000F007C117D /* Release */, 487 | 249021D4217E4FDB00AE95B9 /* Profile */, 488 | ); 489 | defaultConfigurationIsVisible = 0; 490 | defaultConfigurationName = Release; 491 | }; 492 | /* End XCConfigurationList section */ 493 | }; 494 | rootObject = 97C146E61CF9000F007C117D /* Project object */; 495 | } 496 | -------------------------------------------------------------------------------- /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.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 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: [UIApplication.LaunchOptionsKey: 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" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /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 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | devs 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(FLUTTER_BUILD_NAME) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UIViewControllerBasedStatusBarAppearance 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /lib/core/constant/colors.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ColorsConstant { 4 | final Color lightColor = Colors.white.withOpacity(.6); 5 | final Color darkColor = Colors.black.withOpacity(.6); 6 | } 7 | -------------------------------------------------------------------------------- /lib/core/constant/string.dart: -------------------------------------------------------------------------------- 1 | class StringConstant { 2 | static const baseImageURL = "https://avatars.githubusercontent.com/"; 3 | } 4 | -------------------------------------------------------------------------------- /lib/core/datasource/devs_datasource.dart: -------------------------------------------------------------------------------- 1 | import 'package:devs/core/models/dev.dart'; 2 | 3 | abstract class IDevsDataSource { 4 | Future> getDevs(); 5 | } 6 | -------------------------------------------------------------------------------- /lib/core/datasource/local/devs_local_datasource.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | import 'package:devs/core/datasource/devs_datasource.dart'; 3 | import 'package:devs/core/models/dev.dart'; 4 | import 'package:flutter/services.dart'; 5 | 6 | abstract class IDevsLocalDataSource { 7 | Future> getDevs(); 8 | } 9 | 10 | class DevsLocalDataSource implements IDevsDataSource { 11 | @override 12 | Future> getDevs() async { 13 | try { 14 | String data = await rootBundle.loadString('assets/data/devs.json'); 15 | final result = json.decode(data); 16 | return List.from( 17 | result.map( 18 | (i) => Dev.fromJson(i), 19 | ), 20 | ); 21 | } catch (e) { 22 | return []; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/core/datasource/memory/devs_memory_datasource.dart: -------------------------------------------------------------------------------- 1 | import 'package:devs/core/datasource/devs_datasource.dart'; 2 | import 'package:devs/core/models/dev.dart'; 3 | 4 | // FIXME: This seems redundant since streams stores the list internally 5 | class DevsMemoryDataSource implements IDevsDataSource { 6 | List _devList; 7 | 8 | @override 9 | Future> getDevs() async { 10 | return _devList; 11 | } 12 | 13 | // TODO: Add a memory datasource abstract class for better polymorphism 14 | void setCache(List devList) => _devList = devList; 15 | } 16 | -------------------------------------------------------------------------------- /lib/core/datasource/remote/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/lib/core/datasource/remote/.gitkeep -------------------------------------------------------------------------------- /lib/core/models/dev.dart: -------------------------------------------------------------------------------- 1 | class Dev { 2 | String name; 3 | List roles; 4 | String about; 5 | String username; 6 | Socials socials; 7 | 8 | Dev({this.name, this.roles, this.about, this.username, this.socials}); 9 | 10 | Dev.fromJson(Map json) { 11 | name = json['name']; 12 | roles = json['roles'].cast(); 13 | about = json['about']; 14 | username = json['username']; 15 | socials = 16 | json['socials'] != null ? new Socials.fromJson(json['socials']) : null; 17 | } 18 | 19 | Map toJson() { 20 | final Map data = new Map(); 21 | data['name'] = this.name; 22 | data['roles'] = this.roles; 23 | data['about'] = this.about; 24 | data['username'] = this.username; 25 | if (this.socials != null) { 26 | data['socials'] = this.socials.toJson(); 27 | } 28 | return data; 29 | } 30 | } 31 | 32 | class Socials { 33 | String twitter; 34 | String facebook; 35 | String linkedin; 36 | 37 | Socials({this.twitter, this.facebook, this.linkedin}); 38 | 39 | Socials.fromJson(Map json) { 40 | twitter = json['twitter'] != null ? json['twitter'] : ''; 41 | facebook = json['facebook'] != null ? json['facebook'] : ''; 42 | linkedin = json['linkedin'] != null ? json['linkedin'] : ''; 43 | } 44 | 45 | Map toJson() { 46 | final Map data = new Map(); 47 | data['twitter'] = this.twitter != null ? this.twitter : ''; 48 | data['facebook'] = this.facebook != null ? this.facebook : ''; 49 | data['linkedin'] = this.linkedin != null ? this.linkedin : ''; 50 | return data; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /lib/core/repositories/devs_repository.dart: -------------------------------------------------------------------------------- 1 | import 'package:devs/core/datasource/local/devs_local_datasource.dart'; 2 | import 'package:devs/core/datasource/memory/devs_memory_datasource.dart'; 3 | import 'package:devs/core/models/dev.dart'; 4 | 5 | abstract class IDevsRepository { 6 | Future> getDevs(); 7 | } 8 | 9 | class DevsRepository implements IDevsRepository { 10 | DevsRepository(this.localDataSource, this.memoryDataSource) 11 | : assert(localDataSource != null || memoryDataSource != null); 12 | 13 | final DevsLocalDataSource localDataSource; 14 | final DevsMemoryDataSource memoryDataSource; 15 | 16 | @override 17 | Future> getDevs() async { 18 | List memory = await memoryDataSource.getDevs(); 19 | if (memory == null) { 20 | List local = await localDataSource.getDevs(); 21 | memoryDataSource.setCache(local); 22 | return local; 23 | } else 24 | return memory; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/core/theme/colors.dart: -------------------------------------------------------------------------------- 1 | // Keep it simple 2 | // 3 | // There are alternatives to handling colors, eg. [flutter_gen](https://pub.dev/packages/flutter_gen) 4 | // But since we are expecting beginners to contribution to this repo, 5 | // we don't want them to start dealing with issues encountered in code generation, 6 | 7 | import 'package:flutter/material.dart'; 8 | 9 | class ThemeColors { 10 | static const Color yellow = Color(0xFFF1C40F); 11 | static const Color yellowDark = Color(0xFFC8A519); 12 | static const Color blue = Color(0xFF2C90E5); 13 | static const Color blueDark = Color(0xFF1E75BF); 14 | } 15 | -------------------------------------------------------------------------------- /lib/core/widgets/components/main_filters.dart: -------------------------------------------------------------------------------- 1 | import 'package:devs/core/theme/colors.dart'; 2 | import 'package:flutter/cupertino.dart'; 3 | import 'package:flutter/material.dart'; 4 | 5 | // Filters for switching between DEVBOARD and JOBS page. 6 | class MainFilters extends StatelessWidget { 7 | final VoidCallback onDevboardPressed; 8 | final VoidCallback onJobsPressed; 9 | final int selectedIndex; 10 | 11 | const MainFilters({ 12 | Key key, 13 | @required this.onDevboardPressed, 14 | @required this.onJobsPressed, 15 | this.selectedIndex = 0, 16 | }) : super(key: key); 17 | 18 | @override 19 | Widget build(BuildContext context) { 20 | return Row( 21 | children: [ 22 | _FilterButton( 23 | title: 'DEVBOARD', 24 | isSelected: selectedIndex == 0, 25 | onPressed: onDevboardPressed, 26 | ), 27 | _FilterButton( 28 | title: 'JOBS', 29 | isSelected: selectedIndex == 1, 30 | onPressed: onJobsPressed, 31 | ), 32 | ], 33 | ); 34 | } 35 | } 36 | 37 | class _FilterButton extends StatelessWidget { 38 | final VoidCallback onPressed; 39 | final bool isSelected; 40 | final String title; 41 | 42 | const _FilterButton({ 43 | Key key, 44 | this.onPressed, 45 | this.isSelected = false, 46 | this.title, 47 | }) : super(key: key); 48 | 49 | Color get _color => isSelected ? ThemeColors.blue : Colors.transparent; 50 | 51 | @override 52 | Widget build(BuildContext context) { 53 | return ClipRRect( 54 | borderRadius: BorderRadius.circular(48), 55 | child: AnimatedContainer( 56 | duration: Duration(milliseconds: 250), 57 | width: 200, 58 | height: 64, 59 | color: _color, 60 | child: isSelected 61 | ? FlatButton( 62 | onPressed: onPressed, 63 | splashColor: ThemeColors.blueDark, 64 | highlightColor: ThemeColors.blueDark, 65 | child: Text( 66 | title, 67 | style: Theme.of(context).textTheme.headline5.copyWith( 68 | color: Colors.white, 69 | ), 70 | ), 71 | ) 72 | : CupertinoButton( 73 | child: Text( 74 | title, 75 | style: Theme.of(context).textTheme.headline5.copyWith( 76 | color: ThemeColors.blue, 77 | ), 78 | ), 79 | onPressed: onPressed, 80 | ), 81 | ), 82 | ); 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /lib/core/widgets/components/search_bar.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class SearchBar extends StatefulWidget { 4 | final Function(String search) onChanged; 5 | 6 | const SearchBar({ 7 | Key key, 8 | this.onChanged, 9 | }) : super(key: key); 10 | 11 | @override 12 | State createState() { 13 | return _SearchBarState(); 14 | } 15 | } 16 | 17 | class _SearchBarState extends State { 18 | @override 19 | Widget build(BuildContext context) { 20 | return Container( 21 | height: 100, 22 | width: MediaQuery.of(context).size.width * 0.60, 23 | decoration: BoxDecoration( 24 | color: Colors.white, 25 | boxShadow: [ 26 | BoxShadow( 27 | blurRadius: 30, 28 | spreadRadius: 10, 29 | color: Colors.grey.shade100, 30 | ), 31 | ], 32 | ), 33 | child: Container( 34 | margin: const EdgeInsets.only( 35 | left: 36, 36 | top: 24, 37 | ), 38 | child: TextField( 39 | onChanged: (String value) { 40 | widget.onChanged(value); 41 | }, 42 | style: TextStyle( 43 | fontSize: 32, 44 | ), 45 | decoration: InputDecoration( 46 | border: InputBorder.none, 47 | hintText: "Search name, Github usernames...", 48 | hintStyle: TextStyle( 49 | fontSize: 32, 50 | ), 51 | prefixIcon: Icon( 52 | Icons.search, 53 | size: 32.0, 54 | ), 55 | ), 56 | ), 57 | ), 58 | ); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /lib/features/dashboard/dashboard_model.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:devs/utils/utils.dart'; 4 | import 'package:flutter/material.dart'; 5 | import 'package:rxdart/rxdart.dart'; 6 | 7 | import '../../core/models/dev.dart'; 8 | import '../../core/repositories/devs_repository.dart'; 9 | 10 | const _DEBOUNCE_TIME = 300; 11 | 12 | class DashboardModel extends ChangeNotifier { 13 | DashboardModel(this.devsRepository) { 14 | _search.add(""); // Initial data 15 | } 16 | 17 | final IDevsRepository devsRepository; 18 | 19 | int selectedPageIndex = 0; 20 | 21 | BehaviorSubject _search = BehaviorSubject(); 22 | 23 | Stream> getDevs() { 24 | return _search.stream 25 | .debounceTime(Duration(milliseconds: _DEBOUNCE_TIME)) 26 | .asyncMap((query) async { 27 | List devsList = await devsRepository.getDevs(); 28 | return query.isEmpty 29 | ? devsList 30 | : devsList 31 | .where((dev) => 32 | // TODO: Improve null safety efficiency, maybe utilizing extension function 33 | (dev.name?.containsIgnoreCase(query) ?? false) || 34 | (dev.about?.containsIgnoreCase(query) ?? false) || 35 | (dev.username?.containsIgnoreCase(query) ?? false) || 36 | (dev.roles?.any((String role) => 37 | role?.containsIgnoreCase(query) ?? false) ?? 38 | false) || 39 | (dev.socials?.facebook?.containsIgnoreCase(query) ?? false) || 40 | (dev.socials?.linkedin?.containsIgnoreCase(query) ?? false) || 41 | (dev.socials?.twitter?.containsIgnoreCase(query) ?? false)) 42 | .toList(); 43 | }).distinct(); 44 | } 45 | 46 | void search(String query) { 47 | _search.add(query); 48 | } 49 | 50 | void setSelectedPageIndex(int index) { 51 | selectedPageIndex = index; 52 | // TODO: Add a switch statement to handle stream switching when selecting page 53 | notifyListeners(); 54 | } 55 | 56 | @override 57 | void dispose() { 58 | _search.close(); 59 | super.dispose(); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /lib/features/dashboard/dashboard_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:devs/core/widgets/components/main_filters.dart'; 2 | import 'package:devs/core/widgets/components/search_bar.dart'; 3 | import 'package:devs/features/dashboard/dashboard_model.dart'; 4 | import 'package:devs/features/devboard/devboard_model.dart'; 5 | import 'package:devs/features/devboard/devboard_page.dart'; 6 | import 'package:devs/features/jobs/jobs_page.dart'; 7 | import 'package:flutter/material.dart'; 8 | import 'package:provider/provider.dart'; 9 | 10 | class DashboardPage extends StatefulWidget { 11 | @override 12 | State createState() => DashboardPageState(); 13 | } 14 | 15 | class DashboardPageState extends State { 16 | PageController pageController; 17 | DashboardModel dashboardModel; 18 | List pages; 19 | 20 | @override 21 | void initState() { 22 | pageController = PageController( 23 | initialPage: 0, 24 | ); 25 | super.initState(); 26 | } 27 | 28 | @override 29 | void didChangeDependencies() { 30 | dashboardModel = Provider.of(context); 31 | 32 | pages = [ 33 | MultiProvider( 34 | providers: [ 35 | ChangeNotifierProvider( 36 | create: (_) => DevBoardModel(dashboardModel.getDevs()), 37 | ), 38 | ], 39 | child: DevboardPage(), 40 | ), 41 | // ChangeNotifierProvider( 42 | // create: (_) => DevBoardModel(dashboardModel.getDevs()), 43 | // child: DevboardPage(), 44 | // ), 45 | JobsPage(), 46 | ]; 47 | 48 | WidgetsBinding.instance.addPersistentFrameCallback((_) { 49 | if (dashboardModel.selectedPageIndex != pageController.page.floor()) { 50 | pageController.jumpToPage( 51 | dashboardModel.selectedPageIndex, 52 | ); 53 | } 54 | }); 55 | 56 | super.didChangeDependencies(); 57 | } 58 | 59 | @override 60 | Widget build(BuildContext context) { 61 | return Scaffold( 62 | backgroundColor: Colors.white, 63 | body: SingleChildScrollView( 64 | physics: BouncingScrollPhysics(), 65 | child: Stack( 66 | children: [ 67 | Container( 68 | height: 400, 69 | color: Colors.blue.shade50, 70 | ), 71 | Align( 72 | alignment: Alignment.topLeft, 73 | child: Container( 74 | margin: const EdgeInsets.only( 75 | top: 32, 76 | left: 32, 77 | ), 78 | height: 64, 79 | child: Image.asset( 80 | 'assets/logos/logo.png', 81 | ), 82 | ), 83 | ), 84 | Container( 85 | margin: const EdgeInsets.only( 86 | top: 460, 87 | left: 32, 88 | right: 32, 89 | ), 90 | child: Column( 91 | mainAxisAlignment: MainAxisAlignment.start, 92 | crossAxisAlignment: CrossAxisAlignment.start, 93 | children: [ 94 | Container( 95 | height: 1000, 96 | child: PageView( 97 | physics: NeverScrollableScrollPhysics(), 98 | controller: pageController, 99 | children: pages, 100 | ), 101 | ), 102 | ], 103 | ), 104 | ), 105 | Align( 106 | alignment: Alignment.topCenter, 107 | child: Container( 108 | margin: const EdgeInsets.only( 109 | top: 200, 110 | ), 111 | child: Column( 112 | children: [ 113 | Row( 114 | mainAxisAlignment: MainAxisAlignment.center, 115 | children: [ 116 | MainFilters( 117 | selectedIndex: dashboardModel.selectedPageIndex, 118 | onDevboardPressed: () => 119 | dashboardModel.setSelectedPageIndex(0), 120 | onJobsPressed: () => 121 | dashboardModel.setSelectedPageIndex(1), 122 | ), 123 | ], 124 | ), 125 | SizedBox(height: 80), 126 | SearchBar( 127 | onChanged: (String search) { 128 | dashboardModel.search(search); 129 | }, 130 | ), 131 | ], 132 | ), 133 | ), 134 | ), 135 | ], 136 | ), 137 | ), 138 | ); 139 | } 140 | } 141 | -------------------------------------------------------------------------------- /lib/features/devboard/devboard_model.dart: -------------------------------------------------------------------------------- 1 | import 'package:devs/core/models/dev.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | class DevBoardModel extends ChangeNotifier { 5 | DevBoardModel(this._devsStream); 6 | 7 | final Stream> _devsStream; 8 | 9 | Stream> get devsStream => _devsStream; 10 | } 11 | -------------------------------------------------------------------------------- /lib/features/devboard/devboard_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:devs/core/models/dev.dart'; 2 | import 'package:devs/features/devboard/devs/devs_list.dart'; 3 | import 'package:flutter/material.dart'; 4 | import 'package:provider/provider.dart'; 5 | import '../dashboard/dashboard_model.dart'; 6 | import 'devs/devs_list.dart'; 7 | 8 | class DevboardPage extends StatefulWidget { 9 | @override 10 | State createState() => _DevboardPageState(); 11 | } 12 | 13 | class _DevboardPageState extends State { 14 | DevBoardModel devBoardModel; 15 | 16 | @override 17 | void didChangeDependencies() { 18 | devBoardModel = Provider.of(context, listen: false); 19 | 20 | super.didChangeDependencies(); 21 | } 22 | 23 | @override 24 | Widget build(BuildContext context) { 25 | return Scaffold( 26 | backgroundColor: Colors.white, 27 | body: Container( 28 | child: StreamBuilder>( 29 | initialData: [], 30 | stream: devBoardModel.devsStream, 31 | builder: (context, data) { 32 | // TODO: Show a progress bar while data is null i.e loading data 33 | return DevsList(devs: data?.data ?? []); 34 | }, 35 | ), 36 | ), 37 | ); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lib/features/devboard/devs/devs_list.dart: -------------------------------------------------------------------------------- 1 | import 'package:devs/core/constant/colors.dart'; 2 | import 'package:devs/core/constant/string.dart'; 3 | import 'package:devs/core/models/dev.dart'; 4 | import 'package:flutter/material.dart'; 5 | import 'package:font_awesome_flutter/font_awesome_flutter.dart'; 6 | import 'package:url_launcher/url_launcher.dart'; 7 | 8 | class DevsList extends StatelessWidget { 9 | final List devs; 10 | 11 | const DevsList({ 12 | Key key, 13 | this.devs = const [], 14 | }) : assert(devs != null), 15 | super(key: key); 16 | 17 | @override 18 | Widget build(BuildContext context) { 19 | var itemSizeWidth = MediaQuery.of(context).size.width; 20 | if (devs.isEmpty) { 21 | return Text('No devs found'); 22 | } 23 | 24 | /// Sort dev's ascending 25 | devs.sort((a, b) => a.name.compareTo(b.name)); 26 | 27 | if (itemSizeWidth < 730) { 28 | return GridView.builder( 29 | gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( 30 | childAspectRatio: itemSizeWidth < 600 ? 2 : 1.3, 31 | crossAxisSpacing: 16, 32 | mainAxisSpacing: 16, 33 | crossAxisCount: (itemSizeWidth / 400).round(), 34 | ), 35 | itemCount: devs.length, 36 | scrollDirection: Axis.vertical, 37 | itemBuilder: (_, i) => _DevListCardMobile( 38 | dev: devs[i], 39 | ), 40 | ); 41 | } 42 | 43 | return GridView.builder( 44 | gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( 45 | childAspectRatio: 2, 46 | crossAxisSpacing: 16, 47 | mainAxisSpacing: 16, 48 | crossAxisCount: (itemSizeWidth / 450).round(), 49 | ), 50 | itemCount: devs.length, 51 | itemBuilder: (_, i) => _DevListCard( 52 | dev: devs[i], 53 | ), 54 | ); 55 | } 56 | } 57 | 58 | class _DevListCard extends StatelessWidget { 59 | final Dev dev; 60 | 61 | const _DevListCard({Key key, this.dev}) : super(key: key); 62 | 63 | @override 64 | Widget build(BuildContext context) { 65 | final bool isDark = false; 66 | final bool hasSocials = dev.socials == null; 67 | final String roles = dev.roles.join(" • "); 68 | final Color iconColor = isDark ? Colors.blueAccent[100] : Colors.blueAccent; 69 | 70 | _launchURL(String url) async { 71 | if (await canLaunch(url)) { 72 | await launch(url); 73 | } else { 74 | print('Could not launch $url'); 75 | } 76 | } 77 | 78 | TextStyle renderCardTextStyle( 79 | double fontSize, 80 | FontWeight fontWeight, 81 | bool withOpacity, 82 | ) { 83 | Color textColor = !isDark ? Colors.black : Colors.white; 84 | if (withOpacity) { 85 | textColor = isDark 86 | ? Colors.white.withOpacity(.6) 87 | : Colors.black.withOpacity(.6); 88 | } 89 | 90 | return TextStyle( 91 | fontSize: fontSize, 92 | fontWeight: fontWeight, 93 | color: textColor, 94 | ); 95 | } 96 | 97 | Widget _socials(Socials socials) { 98 | return socials == null 99 | ? Container() 100 | : Container( 101 | child: Row( 102 | mainAxisSize: MainAxisSize.min, 103 | mainAxisAlignment: MainAxisAlignment.center, 104 | children: [ 105 | IconButton( 106 | icon: FaIcon( 107 | FontAwesomeIcons.twitter, 108 | size: 20, 109 | ), 110 | onPressed: socials.twitter.isEmpty 111 | ? null 112 | : () { 113 | _launchURL(socials.twitter); 114 | }, 115 | ), 116 | IconButton( 117 | icon: FaIcon( 118 | FontAwesomeIcons.facebook, 119 | size: 20, 120 | ), 121 | onPressed: socials.facebook.isEmpty 122 | ? null 123 | : () { 124 | _launchURL(socials.facebook); 125 | }, 126 | ), 127 | IconButton( 128 | icon: FaIcon( 129 | FontAwesomeIcons.linkedinIn, 130 | size: 20, 131 | ), 132 | onPressed: socials.linkedin.isEmpty 133 | ? null 134 | : () { 135 | _launchURL(socials.linkedin); 136 | }, 137 | ), 138 | ], 139 | ), 140 | ); 141 | } 142 | 143 | return Container( 144 | height: 250, 145 | margin: EdgeInsets.only( 146 | bottom: 16, 147 | ), 148 | decoration: BoxDecoration( 149 | color: !isDark ? Colors.white : Color(0xff192C48), 150 | borderRadius: BorderRadius.circular(10), 151 | boxShadow: [ 152 | BoxShadow( 153 | blurRadius: 10, 154 | color: Colors.black.withOpacity(.05), 155 | offset: Offset(0, 5), 156 | ) 157 | ], 158 | ), 159 | child: Row( 160 | children: [ 161 | Container( 162 | height: double.infinity, 163 | width: 15, 164 | decoration: BoxDecoration( 165 | color: iconColor, 166 | // Color can be based on the color specified by the contributor in json file (e.g. #c31432) 167 | borderRadius: BorderRadius.only( 168 | topLeft: Radius.circular(10), 169 | bottomLeft: Radius.circular(10), 170 | ), 171 | ), 172 | ), 173 | SizedBox( 174 | width: 8, 175 | ), 176 | Expanded( 177 | child: Padding( 178 | padding: const EdgeInsets.symmetric( 179 | vertical: 12, 180 | horizontal: 4, 181 | ), 182 | child: Row( 183 | children: [ 184 | Column( 185 | mainAxisAlignment: MainAxisAlignment.center, 186 | crossAxisAlignment: CrossAxisAlignment.center, 187 | children: [ 188 | hasSocials 189 | ? Container() 190 | : Expanded( 191 | child: SizedBox(), 192 | ), 193 | CircleAvatar( 194 | backgroundImage: NetworkImage( 195 | '${StringConstant.baseImageURL}${dev.username}'), 196 | radius: 45, 197 | ), 198 | hasSocials 199 | ? Container() 200 | : Expanded(flex: 2, child: _socials(dev.socials)), 201 | ], 202 | ), 203 | Container( 204 | margin: EdgeInsets.only(right: 16), 205 | ), 206 | Expanded( 207 | child: Column( 208 | crossAxisAlignment: CrossAxisAlignment.start, 209 | mainAxisAlignment: MainAxisAlignment.spaceEvenly, 210 | children: [ 211 | Column( 212 | crossAxisAlignment: CrossAxisAlignment.start, 213 | mainAxisAlignment: MainAxisAlignment.start, 214 | children: [ 215 | Text( 216 | dev.name, 217 | maxLines: 2, 218 | style: renderCardTextStyle( 219 | 21, FontWeight.bold, false), 220 | overflow: TextOverflow.ellipsis, 221 | ), 222 | Text( 223 | roles, 224 | maxLines: 2, 225 | style: renderCardTextStyle( 226 | 14, FontWeight.w300, true), 227 | overflow: TextOverflow.ellipsis, 228 | ), 229 | ], 230 | ), 231 | Text( 232 | dev.about, 233 | maxLines: 2, 234 | style: renderCardTextStyle(14, FontWeight.w200, true), 235 | overflow: TextOverflow.ellipsis, 236 | ), 237 | ], 238 | ), 239 | ) 240 | ], 241 | ), 242 | ), 243 | ) 244 | ], 245 | ), 246 | ); 247 | } 248 | } 249 | 250 | class _DevListCardMobile extends StatelessWidget { 251 | final Dev dev; 252 | 253 | const _DevListCardMobile({Key key, this.dev}) : super(key: key); 254 | 255 | @override 256 | Widget build(BuildContext context) { 257 | final bool isDark = false; 258 | final double _iconSize = 20; 259 | final String roles = dev.roles.join(" • "); 260 | final Color iconColor = isDark ? Colors.blueAccent[100] : Colors.blueAccent; 261 | 262 | _launchURL(String url) async { 263 | if (await canLaunch(url)) { 264 | await launch(url); 265 | } else { 266 | print('Could not launch $url'); 267 | } 268 | } 269 | 270 | Widget _socials(Socials socials) { 271 | return socials == null 272 | ? Container() 273 | : Container( 274 | child: Row( 275 | mainAxisSize: MainAxisSize.min, 276 | mainAxisAlignment: MainAxisAlignment.start, 277 | children: [ 278 | GestureDetector( 279 | child: FaIcon( 280 | FontAwesomeIcons.twitter, 281 | size: _iconSize, 282 | ), 283 | onTap: socials.twitter.isEmpty 284 | ? null 285 | : () { 286 | _launchURL(socials.twitter); 287 | }, 288 | ), 289 | SizedBox( 290 | width: 16, 291 | ), 292 | GestureDetector( 293 | child: FaIcon( 294 | FontAwesomeIcons.facebook, 295 | size: _iconSize, 296 | ), 297 | onTap: socials.facebook.isEmpty 298 | ? null 299 | : () { 300 | _launchURL(socials.facebook); 301 | }, 302 | ), 303 | SizedBox( 304 | width: 16, 305 | ), 306 | GestureDetector( 307 | child: FaIcon( 308 | FontAwesomeIcons.linkedinIn, 309 | size: _iconSize, 310 | ), 311 | onTap: socials.linkedin.isEmpty 312 | ? null 313 | : () { 314 | _launchURL(socials.linkedin); 315 | }, 316 | ), 317 | SizedBox( 318 | width: 16, 319 | ), 320 | ], 321 | ), 322 | ); 323 | } 324 | 325 | return Container( 326 | width: double.infinity, 327 | height: 200, 328 | margin: EdgeInsets.only( 329 | right: 16, 330 | bottom: 16, 331 | ), 332 | decoration: BoxDecoration( 333 | color: !isDark ? Colors.white : Color(0xff192C48), 334 | borderRadius: BorderRadius.circular(10), 335 | boxShadow: [ 336 | BoxShadow( 337 | blurRadius: 10, 338 | color: Colors.black.withOpacity(.05), 339 | offset: Offset(0, 5), 340 | ) 341 | ], 342 | ), 343 | child: Row( 344 | children: [ 345 | Container( 346 | height: double.infinity, 347 | width: 15, 348 | decoration: BoxDecoration( 349 | color: iconColor, 350 | // Color can be based on the color specified by the contributor in json file (e.g. #c31432) 351 | borderRadius: BorderRadius.only( 352 | topLeft: Radius.circular(10), 353 | bottomLeft: Radius.circular(10), 354 | ), 355 | ), 356 | ), 357 | SizedBox( 358 | width: 8, 359 | ), 360 | Expanded( 361 | child: Padding( 362 | padding: const EdgeInsets.symmetric( 363 | vertical: 12, 364 | horizontal: 4, 365 | ), 366 | child: Column( 367 | crossAxisAlignment: CrossAxisAlignment.start, 368 | mainAxisAlignment: MainAxisAlignment.start, 369 | children: [ 370 | Row( 371 | children: [ 372 | CircleAvatar( 373 | backgroundImage: NetworkImage( 374 | '${StringConstant.baseImageURL}${dev.username}'), 375 | radius: 35, 376 | ), 377 | Expanded( 378 | child: SizedBox(), 379 | ), 380 | _socials(dev.socials), 381 | ], 382 | ), 383 | SizedBox( 384 | height: 8, 385 | ), 386 | Text( 387 | dev.name, 388 | style: TextStyle( 389 | fontSize: 18, 390 | fontWeight: FontWeight.bold, 391 | color: isDark ? Colors.white : Colors.black, 392 | ), 393 | ), 394 | Text( 395 | roles, 396 | maxLines: 1, 397 | style: TextStyle( 398 | fontSize: 13, 399 | fontWeight: FontWeight.w300, 400 | color: isDark 401 | ? ColorsConstant().lightColor 402 | : ColorsConstant().darkColor, 403 | ), 404 | overflow: TextOverflow.ellipsis, 405 | ), 406 | Expanded( 407 | child: SizedBox(), 408 | ), 409 | Text( 410 | dev.about, 411 | maxLines: 2, 412 | style: TextStyle( 413 | fontSize: 13, 414 | fontWeight: FontWeight.w200, 415 | color: isDark 416 | ? ColorsConstant().lightColor 417 | : ColorsConstant().darkColor, 418 | ), 419 | overflow: TextOverflow.ellipsis, 420 | ), 421 | ], 422 | ), 423 | ), 424 | ) 425 | ], 426 | ), 427 | ); 428 | } 429 | } 430 | -------------------------------------------------------------------------------- /lib/features/jobs/jobs_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class JobsPage extends StatefulWidget { 4 | @override 5 | State createState() => _JobsPageState(); 6 | } 7 | 8 | class _JobsPageState extends State { 9 | @override 10 | Widget build(BuildContext context) { 11 | return Scaffold( 12 | body: Column( 13 | children: [ 14 | Text('Jobs'), 15 | ], 16 | ), 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:devs/core/datasource/local/devs_local_datasource.dart'; 2 | import 'package:devs/core/datasource/memory/devs_memory_datasource.dart'; 3 | import 'package:devs/core/repositories/devs_repository.dart'; 4 | import 'package:devs/features/dashboard/dashboard_model.dart'; 5 | import 'package:devs/features/dashboard/dashboard_page.dart'; 6 | import 'package:flutter/material.dart'; 7 | import 'package:google_fonts/google_fonts.dart'; 8 | import 'package:provider/provider.dart'; 9 | 10 | void main() { 11 | runApp(DevsApp()); 12 | } 13 | 14 | class DevsApp extends StatefulWidget { 15 | @override 16 | State createState() { 17 | return _DevsAppState(); 18 | } 19 | } 20 | 21 | class _DevsAppState extends State { 22 | DevsLocalDataSource devsLocalDataSource; 23 | DevsMemoryDataSource devsMemoryDataSource; 24 | IDevsRepository devsRepository; 25 | 26 | @override 27 | void initState() { 28 | devsLocalDataSource = DevsLocalDataSource(); 29 | devsMemoryDataSource = DevsMemoryDataSource(); 30 | devsRepository = DevsRepository(devsLocalDataSource, devsMemoryDataSource); 31 | super.initState(); 32 | } 33 | 34 | @override 35 | Widget build(BuildContext context) { 36 | return MultiProvider( 37 | providers: [ 38 | ChangeNotifierProvider( 39 | create: (_) => DashboardModel(devsRepository), 40 | ), 41 | // No need to expose the sources 42 | // Provider( 43 | // create: (_) => devsLocalDataSource, 44 | // ), 45 | // Provider( 46 | // create: (_) => devsRepository, 47 | // ), 48 | ], 49 | child: MaterialApp( 50 | title: 'Devs App by Flutter Philippines', 51 | theme: ThemeData( 52 | textTheme: GoogleFonts.latoTextTheme( 53 | Theme.of(context).textTheme, 54 | ), 55 | primarySwatch: Colors.blue, 56 | visualDensity: VisualDensity.adaptivePlatformDensity, 57 | ), 58 | home: DashboardPage(), 59 | ), 60 | ); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /lib/utils/utils.dart: -------------------------------------------------------------------------------- 1 | extension CaseInsensitive on String { 2 | bool containsIgnoreCase(String other) { 3 | return this == null 4 | ? false 5 | : this.toLowerCase().contains(other.toLowerCase()); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/xcuserdata/ 7 | -------------------------------------------------------------------------------- /macos/Flutter/Flutter-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 3 | #include "ephemeral/Flutter-Generated.xcconfig" 4 | -------------------------------------------------------------------------------- /macos/Flutter/Flutter-Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 3 | #include "ephemeral/Flutter-Generated.xcconfig" 4 | -------------------------------------------------------------------------------- /macos/Flutter/GeneratedPluginRegistrant.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | import FlutterMacOS 6 | import Foundation 7 | 8 | import path_provider_macos 9 | import url_launcher_macos 10 | 11 | func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { 12 | PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) 13 | UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) 14 | } 15 | -------------------------------------------------------------------------------- /macos/Podfile: -------------------------------------------------------------------------------- 1 | platform :osx, '10.11' 2 | 3 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency. 4 | ENV['COCOAPODS_DISABLE_STATS'] = 'true' 5 | 6 | project 'Runner', { 7 | 'Debug' => :debug, 8 | 'Profile' => :release, 9 | 'Release' => :release, 10 | } 11 | 12 | def parse_KV_file(file, separator='=') 13 | file_abs_path = File.expand_path(file) 14 | if !File.exists? file_abs_path 15 | return []; 16 | end 17 | pods_ary = [] 18 | skip_line_start_symbols = ["#", "/"] 19 | File.foreach(file_abs_path) { |line| 20 | next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } 21 | plugin = line.split(pattern=separator) 22 | if plugin.length == 2 23 | podname = plugin[0].strip() 24 | path = plugin[1].strip() 25 | podpath = File.expand_path("#{path}", file_abs_path) 26 | pods_ary.push({:name => podname, :path => podpath}); 27 | else 28 | puts "Invalid plugin specification: #{line}" 29 | end 30 | } 31 | return pods_ary 32 | end 33 | 34 | def pubspec_supports_macos(file) 35 | file_abs_path = File.expand_path(file) 36 | if !File.exists? file_abs_path 37 | return false; 38 | end 39 | File.foreach(file_abs_path) { |line| 40 | return true if line =~ /^\s*macos:/ 41 | } 42 | return false 43 | end 44 | 45 | target 'Runner' do 46 | use_frameworks! 47 | use_modular_headers! 48 | 49 | # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock 50 | # referring to absolute paths on developers' machines. 51 | ephemeral_dir = File.join('Flutter', 'ephemeral') 52 | symlink_dir = File.join(ephemeral_dir, '.symlinks') 53 | symlink_plugins_dir = File.join(symlink_dir, 'plugins') 54 | system("rm -rf #{symlink_dir}") 55 | system("mkdir -p #{symlink_plugins_dir}") 56 | 57 | # Flutter Pods 58 | generated_xcconfig = parse_KV_file(File.join(ephemeral_dir, 'Flutter-Generated.xcconfig')) 59 | if generated_xcconfig.empty? 60 | puts "Flutter-Generated.xcconfig must exist. If you're running pod install manually, make sure flutter packages get is executed first." 61 | end 62 | generated_xcconfig.map { |p| 63 | if p[:name] == 'FLUTTER_FRAMEWORK_DIR' 64 | symlink = File.join(symlink_dir, 'flutter') 65 | File.symlink(File.dirname(p[:path]), symlink) 66 | pod 'FlutterMacOS', :path => File.join(symlink, File.basename(p[:path])) 67 | end 68 | } 69 | 70 | # Plugin Pods 71 | plugin_pods = parse_KV_file('../.flutter-plugins') 72 | plugin_pods.map { |p| 73 | symlink = File.join(symlink_plugins_dir, p[:name]) 74 | File.symlink(p[:path], symlink) 75 | if pubspec_supports_macos(File.join(symlink, 'pubspec.yaml')) 76 | pod p[:name], :path => File.join(symlink, 'macos') 77 | end 78 | } 79 | end 80 | 81 | # Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system. 82 | install! 'cocoapods', :disable_input_output_paths => true 83 | -------------------------------------------------------------------------------- /macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 53 | 54 | 64 | 66 | 72 | 73 | 74 | 75 | 76 | 77 | 83 | 85 | 91 | 92 | 93 | 94 | 96 | 97 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @NSApplicationMain 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "16x16", 5 | "idiom" : "mac", 6 | "filename" : "app_icon_16.png", 7 | "scale" : "1x" 8 | }, 9 | { 10 | "size" : "16x16", 11 | "idiom" : "mac", 12 | "filename" : "app_icon_32.png", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "size" : "32x32", 17 | "idiom" : "mac", 18 | "filename" : "app_icon_32.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "32x32", 23 | "idiom" : "mac", 24 | "filename" : "app_icon_64.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "128x128", 29 | "idiom" : "mac", 30 | "filename" : "app_icon_128.png", 31 | "scale" : "1x" 32 | }, 33 | { 34 | "size" : "128x128", 35 | "idiom" : "mac", 36 | "filename" : "app_icon_256.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "256x256", 41 | "idiom" : "mac", 42 | "filename" : "app_icon_256.png", 43 | "scale" : "1x" 44 | }, 45 | { 46 | "size" : "256x256", 47 | "idiom" : "mac", 48 | "filename" : "app_icon_512.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "512x512", 53 | "idiom" : "mac", 54 | "filename" : "app_icon_512.png", 55 | "scale" : "1x" 56 | }, 57 | { 58 | "size" : "512x512", 59 | "idiom" : "mac", 60 | "filename" : "app_icon_1024.png", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /macos/Runner/Base.lproj/MainMenu.xib: -------------------------------------------------------------------------------- 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 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | -------------------------------------------------------------------------------- /macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = devs 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = io.github.flutterph.devs 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright © 2021 io.github.flutterph. All rights reserved. 15 | -------------------------------------------------------------------------------- /macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.server 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /macos/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | $(FLUTTER_BUILD_NAME) 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSMinimumSystemVersion 24 | $(MACOSX_DEPLOYMENT_TARGET) 25 | NSHumanReadableCopyright 26 | $(PRODUCT_COPYRIGHT) 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController.init() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /main.dart.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/main.dart.js -------------------------------------------------------------------------------- /pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | async: 5 | dependency: transitive 6 | description: 7 | name: async 8 | url: "https://pub.dartlang.org" 9 | source: hosted 10 | version: "2.5.0-nullsafety.1" 11 | boolean_selector: 12 | dependency: transitive 13 | description: 14 | name: boolean_selector 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "2.1.0-nullsafety.1" 18 | characters: 19 | dependency: transitive 20 | description: 21 | name: characters 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "1.1.0-nullsafety.3" 25 | charcode: 26 | dependency: transitive 27 | description: 28 | name: charcode 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "1.2.0-nullsafety.1" 32 | clock: 33 | dependency: transitive 34 | description: 35 | name: clock 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "1.1.0-nullsafety.1" 39 | collection: 40 | dependency: transitive 41 | description: 42 | name: collection 43 | url: "https://pub.dartlang.org" 44 | source: hosted 45 | version: "1.15.0-nullsafety.3" 46 | convert: 47 | dependency: transitive 48 | description: 49 | name: convert 50 | url: "https://pub.dartlang.org" 51 | source: hosted 52 | version: "2.1.1" 53 | crypto: 54 | dependency: transitive 55 | description: 56 | name: crypto 57 | url: "https://pub.dartlang.org" 58 | source: hosted 59 | version: "2.1.5" 60 | cupertino_icons: 61 | dependency: "direct main" 62 | description: 63 | name: cupertino_icons 64 | url: "https://pub.dartlang.org" 65 | source: hosted 66 | version: "1.0.0" 67 | fake_async: 68 | dependency: transitive 69 | description: 70 | name: fake_async 71 | url: "https://pub.dartlang.org" 72 | source: hosted 73 | version: "1.2.0-nullsafety.1" 74 | ffi: 75 | dependency: transitive 76 | description: 77 | name: ffi 78 | url: "https://pub.dartlang.org" 79 | source: hosted 80 | version: "0.1.3" 81 | file: 82 | dependency: transitive 83 | description: 84 | name: file 85 | url: "https://pub.dartlang.org" 86 | source: hosted 87 | version: "5.2.1" 88 | flutter: 89 | dependency: "direct main" 90 | description: flutter 91 | source: sdk 92 | version: "0.0.0" 93 | flutter_test: 94 | dependency: "direct dev" 95 | description: flutter 96 | source: sdk 97 | version: "0.0.0" 98 | flutter_web_plugins: 99 | dependency: transitive 100 | description: flutter 101 | source: sdk 102 | version: "0.0.0" 103 | font_awesome_flutter: 104 | dependency: "direct main" 105 | description: 106 | name: font_awesome_flutter 107 | url: "https://pub.dartlang.org" 108 | source: hosted 109 | version: "8.11.0" 110 | google_fonts: 111 | dependency: "direct main" 112 | description: 113 | name: google_fonts 114 | url: "https://pub.dartlang.org" 115 | source: hosted 116 | version: "1.1.2" 117 | http: 118 | dependency: transitive 119 | description: 120 | name: http 121 | url: "https://pub.dartlang.org" 122 | source: hosted 123 | version: "0.12.2" 124 | http_parser: 125 | dependency: transitive 126 | description: 127 | name: http_parser 128 | url: "https://pub.dartlang.org" 129 | source: hosted 130 | version: "3.1.4" 131 | intl: 132 | dependency: transitive 133 | description: 134 | name: intl 135 | url: "https://pub.dartlang.org" 136 | source: hosted 137 | version: "0.16.1" 138 | matcher: 139 | dependency: transitive 140 | description: 141 | name: matcher 142 | url: "https://pub.dartlang.org" 143 | source: hosted 144 | version: "0.12.10-nullsafety.1" 145 | meta: 146 | dependency: transitive 147 | description: 148 | name: meta 149 | url: "https://pub.dartlang.org" 150 | source: hosted 151 | version: "1.3.0-nullsafety.3" 152 | nested: 153 | dependency: transitive 154 | description: 155 | name: nested 156 | url: "https://pub.dartlang.org" 157 | source: hosted 158 | version: "0.0.4" 159 | path: 160 | dependency: transitive 161 | description: 162 | name: path 163 | url: "https://pub.dartlang.org" 164 | source: hosted 165 | version: "1.8.0-nullsafety.1" 166 | path_provider: 167 | dependency: transitive 168 | description: 169 | name: path_provider 170 | url: "https://pub.dartlang.org" 171 | source: hosted 172 | version: "1.6.27" 173 | path_provider_linux: 174 | dependency: transitive 175 | description: 176 | name: path_provider_linux 177 | url: "https://pub.dartlang.org" 178 | source: hosted 179 | version: "0.0.1+2" 180 | path_provider_macos: 181 | dependency: transitive 182 | description: 183 | name: path_provider_macos 184 | url: "https://pub.dartlang.org" 185 | source: hosted 186 | version: "0.0.4+8" 187 | path_provider_platform_interface: 188 | dependency: transitive 189 | description: 190 | name: path_provider_platform_interface 191 | url: "https://pub.dartlang.org" 192 | source: hosted 193 | version: "1.0.4" 194 | path_provider_windows: 195 | dependency: transitive 196 | description: 197 | name: path_provider_windows 198 | url: "https://pub.dartlang.org" 199 | source: hosted 200 | version: "0.0.4+3" 201 | pedantic: 202 | dependency: transitive 203 | description: 204 | name: pedantic 205 | url: "https://pub.dartlang.org" 206 | source: hosted 207 | version: "1.9.2" 208 | platform: 209 | dependency: transitive 210 | description: 211 | name: platform 212 | url: "https://pub.dartlang.org" 213 | source: hosted 214 | version: "2.2.1" 215 | plugin_platform_interface: 216 | dependency: transitive 217 | description: 218 | name: plugin_platform_interface 219 | url: "https://pub.dartlang.org" 220 | source: hosted 221 | version: "1.0.3" 222 | process: 223 | dependency: transitive 224 | description: 225 | name: process 226 | url: "https://pub.dartlang.org" 227 | source: hosted 228 | version: "3.0.13" 229 | provider: 230 | dependency: "direct main" 231 | description: 232 | name: provider 233 | url: "https://pub.dartlang.org" 234 | source: hosted 235 | version: "4.3.3" 236 | rxdart: 237 | dependency: "direct main" 238 | description: 239 | name: rxdart 240 | url: "https://pub.dartlang.org" 241 | source: hosted 242 | version: "0.25.0" 243 | sky_engine: 244 | dependency: transitive 245 | description: flutter 246 | source: sdk 247 | version: "0.0.99" 248 | source_span: 249 | dependency: transitive 250 | description: 251 | name: source_span 252 | url: "https://pub.dartlang.org" 253 | source: hosted 254 | version: "1.8.0-nullsafety.2" 255 | stack_trace: 256 | dependency: transitive 257 | description: 258 | name: stack_trace 259 | url: "https://pub.dartlang.org" 260 | source: hosted 261 | version: "1.10.0-nullsafety.1" 262 | stream_channel: 263 | dependency: transitive 264 | description: 265 | name: stream_channel 266 | url: "https://pub.dartlang.org" 267 | source: hosted 268 | version: "2.1.0-nullsafety.1" 269 | string_scanner: 270 | dependency: transitive 271 | description: 272 | name: string_scanner 273 | url: "https://pub.dartlang.org" 274 | source: hosted 275 | version: "1.1.0-nullsafety.1" 276 | term_glyph: 277 | dependency: transitive 278 | description: 279 | name: term_glyph 280 | url: "https://pub.dartlang.org" 281 | source: hosted 282 | version: "1.2.0-nullsafety.1" 283 | test_api: 284 | dependency: transitive 285 | description: 286 | name: test_api 287 | url: "https://pub.dartlang.org" 288 | source: hosted 289 | version: "0.2.19-nullsafety.2" 290 | typed_data: 291 | dependency: transitive 292 | description: 293 | name: typed_data 294 | url: "https://pub.dartlang.org" 295 | source: hosted 296 | version: "1.3.0-nullsafety.3" 297 | url_launcher: 298 | dependency: "direct main" 299 | description: 300 | name: url_launcher 301 | url: "https://pub.dartlang.org" 302 | source: hosted 303 | version: "5.7.10" 304 | url_launcher_linux: 305 | dependency: transitive 306 | description: 307 | name: url_launcher_linux 308 | url: "https://pub.dartlang.org" 309 | source: hosted 310 | version: "0.0.1+4" 311 | url_launcher_macos: 312 | dependency: transitive 313 | description: 314 | name: url_launcher_macos 315 | url: "https://pub.dartlang.org" 316 | source: hosted 317 | version: "0.0.1+9" 318 | url_launcher_platform_interface: 319 | dependency: transitive 320 | description: 321 | name: url_launcher_platform_interface 322 | url: "https://pub.dartlang.org" 323 | source: hosted 324 | version: "1.0.9" 325 | url_launcher_web: 326 | dependency: transitive 327 | description: 328 | name: url_launcher_web 329 | url: "https://pub.dartlang.org" 330 | source: hosted 331 | version: "0.1.5+3" 332 | url_launcher_windows: 333 | dependency: transitive 334 | description: 335 | name: url_launcher_windows 336 | url: "https://pub.dartlang.org" 337 | source: hosted 338 | version: "0.0.1+3" 339 | vector_math: 340 | dependency: transitive 341 | description: 342 | name: vector_math 343 | url: "https://pub.dartlang.org" 344 | source: hosted 345 | version: "2.1.0-nullsafety.3" 346 | very_good_analysis: 347 | dependency: "direct dev" 348 | description: 349 | name: very_good_analysis 350 | url: "https://pub.dartlang.org" 351 | source: hosted 352 | version: "1.0.4" 353 | win32: 354 | dependency: transitive 355 | description: 356 | name: win32 357 | url: "https://pub.dartlang.org" 358 | source: hosted 359 | version: "1.7.4+1" 360 | xdg_directories: 361 | dependency: transitive 362 | description: 363 | name: xdg_directories 364 | url: "https://pub.dartlang.org" 365 | source: hosted 366 | version: "0.1.2" 367 | sdks: 368 | dart: ">=2.10.0-110 <2.11.0" 369 | flutter: ">=1.22.0 <2.0.0" 370 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: devs 2 | description: Community Project by Flutter Philippines 3 | publish_to: "none" 4 | version: 0.0.1+1 5 | 6 | environment: 7 | sdk: ">=2.7.0 <3.0.0" 8 | 9 | dependencies: 10 | flutter: 11 | sdk: flutter 12 | cupertino_icons: ^1.0.0 13 | google_fonts: ^1.1.2 14 | provider: ^4.3.3 15 | font_awesome_flutter: ^8.11.0 16 | url_launcher: ^5.7.10 17 | rxdart: ^0.25.0 18 | 19 | dev_dependencies: 20 | flutter_test: 21 | sdk: flutter 22 | 23 | very_good_analysis: ^1.0.4 24 | 25 | flutter: 26 | uses-material-design: true 27 | assets: 28 | - assets/logos/ 29 | - assets/data/ 30 | -------------------------------------------------------------------------------- /web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/web/favicon.png -------------------------------------------------------------------------------- /web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/web/icons/Icon-192.png -------------------------------------------------------------------------------- /web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutterph/devs/9d0afea73de1eec6ff94417c07609dd73b9b6a28/web/icons/Icon-512.png -------------------------------------------------------------------------------- /web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | devs 30 | 31 | 32 | 33 | 36 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /web/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "devs", 3 | "short_name": "devs", 4 | "start_url": ".", 5 | "display": "standalone", 6 | "background_color": "#0175C2", 7 | "theme_color": "#0175C2", 8 | "description": "A new Flutter project.", 9 | "orientation": "portrait-primary", 10 | "prefer_related_applications": false, 11 | "icons": [ 12 | { 13 | "src": "icons/Icon-192.png", 14 | "sizes": "192x192", 15 | "type": "image/png" 16 | }, 17 | { 18 | "src": "icons/Icon-512.png", 19 | "sizes": "512x512", 20 | "type": "image/png" 21 | } 22 | ] 23 | } 24 | --------------------------------------------------------------------------------