├── README.md ├── dart_lang ├── .gitignore ├── .metadata ├── README.md ├── android │ ├── app │ │ ├── build.gradle │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── yudong80 │ │ │ │ │ └── dart_lang │ │ │ │ │ └── MainActivity.java │ │ │ └── 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 │ │ │ │ └── styles.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ └── settings.gradle ├── ios │ ├── Flutter │ │ ├── AppFrameworkInfo.plist │ │ ├── Debug.xcconfig │ │ ├── Release.xcconfig │ │ └── flutter_export_environment.sh │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ └── contents.xcworkspacedata │ └── Runner │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── 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 │ │ └── main.m ├── lib │ ├── atm_v1.dart │ ├── atm_v2.dart │ ├── car_v1.dart │ ├── class_example.dart │ ├── control_flows.dart │ ├── data_type_example.dart │ ├── final_const_static.dart │ ├── function_example.dart │ ├── gugudan.dart │ ├── hello_dart.dart │ ├── lang_basic_01.dart │ ├── list_example.dart │ ├── map_example.dart │ ├── operator_basic.dart │ ├── operator_ext.dart │ └── set_example.dart ├── pubspec.lock ├── pubspec.yaml └── test │ ├── atm_v1_test_all.dart │ ├── atm_v1_test_single.dart │ └── atm_v2_test.dart ├── hello_flutter ├── .gitignore ├── .metadata ├── README.md ├── android │ ├── .gitignore │ ├── app │ │ ├── build.gradle │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── yudong80 │ │ │ │ │ └── hello_flutter │ │ │ │ │ └── MainActivity.java │ │ │ └── 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 │ │ │ │ └── styles.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ └── settings.gradle ├── ios │ ├── .gitignore │ ├── Flutter │ │ ├── AppFrameworkInfo.plist │ │ ├── Debug.xcconfig │ │ └── Release.xcconfig │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ └── contents.xcworkspacedata │ └── Runner │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── 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 │ │ └── main.m ├── lib │ ├── main.dart │ ├── simple_app.dart │ ├── stateful_widget_lifecycle_demo.dart │ ├── stateless_to_stateful_widget_demo.dart │ └── stateless_widget_demo.dart ├── pubspec.lock ├── pubspec.yaml └── test │ └── widget_test.dart ├── layout_widgets ├── .flutter-plugins-dependencies ├── .gitignore ├── .metadata ├── README.md ├── android │ ├── .gitignore │ ├── app │ │ ├── build.gradle │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── yudong80 │ │ │ │ │ └── layout_widgets │ │ │ │ │ └── MainActivity.java │ │ │ ├── kotlin │ │ │ │ └── com │ │ │ │ │ └── yudong80 │ │ │ │ │ └── layout_widgets │ │ │ │ │ └── MainActivity.kt │ │ │ └── res │ │ │ │ ├── drawable │ │ │ │ └── launch_background.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ └── values │ │ │ │ └── styles.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ └── settings.gradle ├── assets │ ├── autumn-leaves.jpg │ ├── fonts │ │ ├── Poppins-Bold.ttf │ │ ├── Poppins-Regular.ttf │ │ ├── Raleway-Italic.ttf │ │ └── Raleway-Regular.ttf │ ├── icon │ │ └── fireworks.png │ ├── logo.jpg │ └── london.jpg ├── ios │ ├── .gitignore │ ├── Flutter │ │ ├── AppFrameworkInfo.plist │ │ ├── Debug.xcconfig │ │ └── Release.xcconfig │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ └── contents.xcworkspacedata │ └── 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-50x50@1x.png │ │ │ ├── Icon-App-50x50@2x.png │ │ │ ├── Icon-App-57x57@1x.png │ │ │ ├── Icon-App-57x57@2x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-72x72@1x.png │ │ │ ├── Icon-App-72x72@2x.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 │ ├── button_demo.dart │ ├── contacts_demo_v1.dart │ ├── contacts_demo_v2.dart │ ├── container_demo.dart │ ├── image_demo.dart │ ├── listview_static_demo.dart │ ├── login_form_demo_v1.dart │ ├── material_app_demo.dart │ ├── material_scaffold_app_demo.dart │ ├── no_material_app_demo.dart │ ├── simple_theme_demo.dart │ └── text_demo.dart ├── pubspec.lock └── pubspec.yaml ├── navigation_state ├── .flutter-plugins-dependencies ├── .gitignore ├── .metadata ├── README.md ├── android │ ├── .gitignore │ ├── app │ │ ├── build.gradle │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── yudong80 │ │ │ │ │ └── navigation_state │ │ │ │ │ └── MainActivity.java │ │ │ ├── kotlin │ │ │ │ └── com │ │ │ │ │ └── yudong80 │ │ │ │ │ └── navigation_state │ │ │ │ │ └── MainActivity.kt │ │ │ └── res │ │ │ │ ├── drawable │ │ │ │ └── launch_background.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ └── values │ │ │ │ └── styles.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ └── settings.gradle ├── assets │ ├── icon │ │ └── hot-air-balloon.png │ └── logo.jpg ├── ios │ ├── .gitignore │ ├── Flutter │ │ ├── AppFrameworkInfo.plist │ │ ├── Debug.xcconfig │ │ └── Release.xcconfig │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ └── contents.xcworkspacedata │ └── 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-50x50@1x.png │ │ │ ├── Icon-App-50x50@2x.png │ │ │ ├── Icon-App-57x57@1x.png │ │ │ ├── Icon-App-57x57@2x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-72x72@1x.png │ │ │ ├── Icon-App-72x72@2x.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 │ ├── contacts_demo_v3.dart │ ├── login_form_demo_v2.dart │ ├── navigator_push_demo.dart │ ├── navigator_routes_demo.dart │ ├── page_contact_detail.dart │ ├── page_contact_list.dart │ ├── page_login.dart │ ├── page_main.dart │ └── state_simple.dart ├── pubspec.lock ├── pubspec.yaml ├── test │ └── login_form_demo_v2_test.dart └── test_driver │ ├── login_form_demo_v2_app.dart │ └── login_form_demo_v2_app_test.dart ├── network_async ├── .gitignore ├── .metadata ├── README.md ├── android │ ├── app │ │ ├── build.gradle │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── yudong80 │ │ │ │ │ └── network_async │ │ │ │ │ └── MainActivity.java │ │ │ └── res │ │ │ │ ├── drawable │ │ │ │ └── launch_background.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ └── values │ │ │ │ └── styles.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ └── settings.gradle ├── assets │ └── icon │ │ ├── rugby-ball.png │ │ └── subway.png ├── ios │ ├── Flutter │ │ ├── AppFrameworkInfo.plist │ │ ├── Debug.xcconfig │ │ ├── Release.xcconfig │ │ └── flutter_export_environment.sh │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ └── contents.xcworkspacedata │ └── Runner │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── 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-50x50@1x.png │ │ │ ├── Icon-App-50x50@2x.png │ │ │ ├── Icon-App-57x57@1x.png │ │ │ ├── Icon-App-57x57@2x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-72x72@1x.png │ │ │ ├── Icon-App-72x72@2x.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 │ │ └── main.m ├── lib │ ├── api │ │ └── subway_api.dart │ ├── http_basic_demo.dart │ ├── http_simple_json_demo.dart │ ├── http_subway_demo_v1.dart │ ├── http_subway_demo_v2.dart │ ├── http_subway_demo_v3.dart │ ├── json_parsing_demo.dart │ ├── main.dart │ ├── model │ │ └── subway_arrival.dart │ ├── page_subway_info.dart │ └── page_subway_main.dart ├── pubspec.lock ├── pubspec.yaml └── test │ └── widget_test.dart ├── platform_channels ├── .flutter-plugins-dependencies ├── .gitignore ├── .metadata ├── README.md ├── android │ ├── .gitignore │ ├── app │ │ ├── build.gradle │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── yudong80 │ │ │ │ │ └── platform_channels │ │ │ │ │ └── MainActivity.java │ │ │ └── res │ │ │ │ ├── drawable │ │ │ │ └── launch_background.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── launcher_icon.png │ │ │ │ └── values │ │ │ │ └── styles.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ └── settings.gradle ├── assets │ └── icon │ │ └── clownfish.png ├── ios │ ├── .gitignore │ ├── Flutter │ │ ├── AppFrameworkInfo.plist │ │ ├── Debug.xcconfig │ │ └── Release.xcconfig │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ └── contents.xcworkspacedata │ └── Runner │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── 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-50x50@1x.png │ │ │ ├── Icon-App-50x50@2x.png │ │ │ ├── Icon-App-57x57@1x.png │ │ │ ├── Icon-App-57x57@2x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-72x72@1x.png │ │ │ ├── Icon-App-72x72@2x.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 │ │ └── main.m ├── lib │ ├── battery_channel_demo_v1.dart │ ├── battery_channel_demo_v2.dart │ ├── location_channel_demo_v1.dart │ ├── location_channel_demo_v2.dart │ └── main.dart ├── pubspec.lock └── pubspec.yaml └── std_library ├── .gitignore ├── .metadata ├── README.md ├── android ├── app │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── yudong80 │ │ │ │ └── std_library │ │ │ │ └── MainActivity.java │ │ └── 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 │ │ │ └── styles.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties └── settings.gradle ├── basket.json ├── ios ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ └── contents.xcworkspacedata └── Runner │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── 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 │ └── main.m ├── lib ├── core_package.dart ├── io_read_write_file_sync.dart ├── io_user_input.dart ├── json_example.dart └── math_examples.dart ├── poem.txt ├── pubspec.lock ├── pubspec.yaml └── sample.txt /README.md: -------------------------------------------------------------------------------- 1 | # flutter_programming 2 | Flutter Programming 3 | -------------------------------------------------------------------------------- /dart_lang/.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: 8661d8aecd626f7f57ccbcb735553edc05a2e713 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /dart_lang/README.md: -------------------------------------------------------------------------------- 1 | # dart_lang 2 | 3 | Introduction to Dart Language 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.io/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.io/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.io/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /dart_lang/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /dart_lang/android/app/src/main/java/com/yudong80/dart_lang/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.yudong80.dart_lang; 2 | 3 | import android.os.Bundle; 4 | import io.flutter.app.FlutterActivity; 5 | import io.flutter.plugins.GeneratedPluginRegistrant; 6 | 7 | public class MainActivity extends FlutterActivity { 8 | @Override 9 | protected void onCreate(Bundle savedInstanceState) { 10 | super.onCreate(savedInstanceState); 11 | GeneratedPluginRegistrant.registerWith(this); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dart_lang/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /dart_lang/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /dart_lang/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /dart_lang/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /dart_lang/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /dart_lang/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /dart_lang/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /dart_lang/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /dart_lang/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.2.1' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | rootProject.buildDir = '../build' 20 | subprojects { 21 | project.buildDir = "${rootProject.buildDir}/${project.name}" 22 | } 23 | subprojects { 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /dart_lang/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | -------------------------------------------------------------------------------- /dart_lang/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip 7 | -------------------------------------------------------------------------------- /dart_lang/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /dart_lang/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /dart_lang/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /dart_lang/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /dart_lang/ios/Flutter/flutter_export_environment.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # This is a generated file; do not edit or check into version control. 3 | export "FLUTTER_ROOT=D:\work\flutter" 4 | export "FLUTTER_APPLICATION_PATH=D:\work\agit\flutter_programming\dart_lang" 5 | export "FLUTTER_TARGET=lib\main.dart" 6 | export "FLUTTER_BUILD_DIR=build" 7 | export "SYMROOT=${SOURCE_ROOT}/../build\ios" 8 | export "FLUTTER_FRAMEWORK_DIR=D:\work\flutter\bin\cache\artifacts\engine\ios" 9 | export "FLUTTER_BUILD_NAME=1.0.0" 10 | export "FLUTTER_BUILD_NUMBER=1" 11 | -------------------------------------------------------------------------------- /dart_lang/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /dart_lang/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /dart_lang/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /dart_lang/ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #include "AppDelegate.h" 2 | #include "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /dart_lang/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 | -------------------------------------------------------------------------------- /dart_lang/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /dart_lang/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /dart_lang/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/dart_lang/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /dart_lang/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. -------------------------------------------------------------------------------- /dart_lang/ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /dart_lang/lib/atm_v1.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | //1. 계좌 생성 3 | Account account1 = new Account("117-123-1", 20000); 4 | Account account2 = new Account("117-123-2", 5000); 5 | 6 | //2. 잔고 확인 7 | print('account1 has ${account1.balance} won'); 8 | print('account2 has ${account2.balance} won'); 9 | 10 | //3. 금액 인출 11 | account1.withdraw(7000); 12 | print('account1 has ${account1.balance} won (7000 won is withrawn)'); 13 | 14 | //4. 계좌 이체 15 | account1.transfer(account2, 5000); 16 | print('account2 has ${account2.balance} won (5000 won is deposited)'); 17 | print('account1 has ${account1.balance} won'); 18 | } 19 | 20 | class Account { 21 | String accountNumber; 22 | int balance; 23 | 24 | Account(this.accountNumber, this.balance); 25 | 26 | bool withdraw(int amount) { 27 | if(balance > amount) { 28 | balance -= amount; 29 | return true; 30 | } 31 | 32 | return false; 33 | } 34 | 35 | bool deposit(int amount) { 36 | balance += amount; 37 | return true; 38 | } 39 | 40 | bool transfer(Account dest, int amount) { 41 | if (balance > amount) { 42 | balance -= amount; 43 | dest.deposit(amount); 44 | return true; 45 | } 46 | 47 | return false; 48 | } 49 | } 50 | 51 | -------------------------------------------------------------------------------- /dart_lang/lib/atm_v2.dart: -------------------------------------------------------------------------------- 1 | class Account { 2 | String accountNumber; 3 | int balance; 4 | 5 | Account(this.accountNumber, this.balance); 6 | 7 | bool withdraw(int amount) { 8 | if(balance > amount) { 9 | balance -= amount; 10 | return true; 11 | } 12 | 13 | return false; 14 | } 15 | 16 | bool deposit(int amount) { 17 | if(amount > 0) { //양수의 금액만 입금할 수 있다 18 | balance += amount; 19 | return true; 20 | } 21 | return false; 22 | } 23 | 24 | bool transfer(Account dest, int amount) { 25 | if (balance > amount) { 26 | balance -= amount; 27 | dest.deposit(amount); 28 | return true; 29 | } 30 | 31 | return false; 32 | } 33 | } 34 | 35 | -------------------------------------------------------------------------------- /dart_lang/lib/car_v1.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | //1. Car 생성 3 | Car car = new Car(); 4 | 5 | //2. 주유 (최대로) 6 | car.putGas(Car.FUEL_MAX); 7 | print('Car has ${car.fuel} litter'); 8 | 9 | //3. 주행 (60 km) 10 | car.drive(60); 11 | print('Car drove ${car.totalDistance} km'); 12 | print('Car has ${car.fuel} litter'); 13 | } 14 | 15 | class Car { 16 | static const int FUEL_MAX = 100; 17 | 18 | int fuel = 0; 19 | int totalDistance = 0; 20 | 21 | int putGas(int gas) { 22 | fuel += gas; 23 | if (fuel > FUEL_MAX) { 24 | fuel = FUEL_MAX; 25 | } 26 | 27 | return fuel; 28 | } 29 | 30 | int drive(int distance) { 31 | if (fuel >= distance) { 32 | fuel -= distance; 33 | totalDistance += distance; 34 | return fuel; 35 | } 36 | 37 | totalDistance += fuel; 38 | fuel = 0; 39 | return fuel; 40 | } 41 | } -------------------------------------------------------------------------------- /dart_lang/lib/class_example.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | //1. Game 클래스 생성 3 | Game game1 = Game('Star Craft', 'Strategy'); 4 | Game game2 = ArcadeGame('Strike 1945', 'Shooting', true); 5 | 6 | //2. 속성 (getter, setter) 7 | print('game1 is ${game1.name}'); 8 | print('game2 is ${game2.name}'); 9 | 10 | game1.genre = 'Realtime Strategy'; 11 | 12 | //3. 메서드 호출 13 | game1.play(); 14 | game2.play(); 15 | } 16 | 17 | class Game { //부모 클래스 18 | String _name; 19 | String _genre; 20 | 21 | Game(this._name, this._genre); //생성자 22 | 23 | //getter, setter 24 | String get name => _name; 25 | set genre(g) => this._genre = g; 26 | 27 | void play() { 28 | print('play $_name game($_genre)!!'); 29 | } 30 | } 31 | 32 | class ArcadeGame extends Game { //자식 클래스 33 | bool _joystickSupport = false; 34 | 35 | //생성자 36 | ArcadeGame(String name, String genre, this._joystickSupport) : super(name, genre); 37 | 38 | @override //메서드 오버라이드 39 | void play() { 40 | print('$name supports joystick? $_joystickSupport'); 41 | } 42 | } -------------------------------------------------------------------------------- /dart_lang/lib/control_flows.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | //1. if 3 | int even = 78; 4 | int odd = 99; 5 | if (even % 2 == 0) { 6 | print('$even is even number'); 7 | } 8 | 9 | if (odd % 2 == 0) { 10 | print('$odd is not even number'); 11 | } else { 12 | print('$odd is odd number'); 13 | } 14 | 15 | //2. for 16 | List fruits = ['Apple', 'Banana', "Kiwi"]; 17 | for (String fruit in fruits) { 18 | print('I like $fruit'); 19 | } 20 | 21 | //3. while 22 | List numbers = [100, 200, -1]; 23 | int i=0; 24 | while(numbers[i] > 0) { 25 | print('${numbers[i]} is positive'); 26 | i = i + 1; 27 | } 28 | 29 | //4. do-while 30 | int j = 5; 31 | do { 32 | print(j); 33 | j--; 34 | } while(j > 0); 35 | 36 | //5. switch / case 37 | List httpCodes = [200, 401, 500]; 38 | for (num http in httpCodes) { 39 | switch(http) { 40 | case 200: 41 | print('200 is OK'); 42 | break; 43 | case 401: 44 | print('400 is Unautherized'); 45 | break; 46 | case 500: 47 | print('500 is Internal Server Error'); 48 | break; 49 | } 50 | } 51 | } -------------------------------------------------------------------------------- /dart_lang/lib/data_type_example.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | //1. 문자열 3 | String str1 = 'flutter'; 4 | String str2 = 'google'; 5 | String plus = str1 + ' ' + str2; 6 | int len = plus.length; 7 | bool empty = plus.isEmpty; 8 | print(plus + ' => length : $len , empty? $empty'); 9 | 10 | //2. 부울형 11 | bool a = true; 12 | bool b = false; 13 | bool chk = a && b; 14 | print('chk is $chk'); 15 | 16 | //3. 동적 타입(var) 17 | var strLen = len; //숫자형 18 | var text = str1; //문자열 19 | var check = chk; //부울형 20 | var variable = text; //var형 21 | print('$strLen , $text , $check , $variable'); 22 | 23 | //컴파일 오류 (보너스) 24 | // variable = chk; 25 | // print('$variable'); 26 | } -------------------------------------------------------------------------------- /dart_lang/lib/final_const_static.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | //1. final 3 | final String name = 'Tony'; 4 | //name = 'Steve'; //compile error!! 5 | 6 | //2. const 7 | const int STUDENTS_MAX = 100; 8 | const double PIE = 3.14159326; 9 | 10 | //3. static 11 | print('Queue initial capacity is ${Queue.initialCapacity}'); 12 | } 13 | 14 | class Queue { 15 | static const initialCapacity = 12; 16 | } -------------------------------------------------------------------------------- /dart_lang/lib/function_example.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | //1. 함수 호출 3 | int a = 100; 4 | int b = 200; 5 | int c = _getBigger(a, b); 6 | print('_getBigger(a,b) = $c'); 7 | 8 | //2. 중복 호출 9 | String str = 'apple'; 10 | String addBrace = addSuffix(addPrefix(str, '('), ')'); 11 | print(addBrace); 12 | 13 | //3. 선택 인자(positional optional parameter) 14 | int num1 = 100; 15 | int num2 = addNumber(100); //inc = 1 대입 16 | int num3 = addNumber(100, 20); //inc = 20 대입 17 | 18 | //4. 이름있는 인자(named optional parameter) 19 | String http1 = getHttp('http://naver.com', port: 80); 20 | String http2 = getHttp('http://localhost'); 21 | print(http1); 22 | print(http2); 23 | } 24 | 25 | String getHttp(String url, {int port = 8080}) { 26 | return 'get http from $url , port = $port'; 27 | } 28 | 29 | int addNumber(int num, [int inc = 1]) => num + inc; 30 | 31 | String addPrefix(String str, String prefix) => '$prefix $str'; 32 | 33 | String addSuffix(String str, String suffix) => '$str $suffix'; 34 | 35 | int _getBigger(int a, int b) { 36 | if (a >= b) return a; 37 | return b; 38 | } -------------------------------------------------------------------------------- /dart_lang/lib/gugudan.dart: -------------------------------------------------------------------------------- 1 | void main() => startGugudan(); 2 | 3 | void startGugudan() { 4 | int dan = 3; 5 | 6 | for (int i=0; i<= 9; ++i) { 7 | print('$dan * $i = ${dan * i}'); 8 | } 9 | } -------------------------------------------------------------------------------- /dart_lang/lib/hello_dart.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | print("Hello Dart"); 3 | } -------------------------------------------------------------------------------- /dart_lang/lib/lang_basic_01.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | //1. 주석 <- 한줄 주석은 슬래시 3 | /** 4 | * 여러 줄의 주석 5 | */ 6 | /// 7 | /// 여러 줄의 주석 (다른 방법) 8 | /// 9 | 10 | //2. 변수 11 | int num1 = 100; 12 | double num2 = 3.14; 13 | num num3 = 100; //num은 정수도 담을 수 있고 14 | num num4 = 3.14; //실수를 담을 수도 있다 15 | 16 | double sum1 = num1 + num2; 17 | //int sum2 = num1 + num2; 18 | print(sum1); 19 | 20 | num sum3 = num3 * num4; 21 | print(sum3); 22 | 23 | //3. 문자열 24 | String text = 'Carpe diem, quam minimum credula postero'; 25 | String myName = 'yudong'; 26 | String hello = 'Hello, ${myName}'; 27 | print(text.substring(0, 10)); 28 | print(hello); 29 | } -------------------------------------------------------------------------------- /dart_lang/lib/list_example.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | //1. 리스트 선언 3 | List numbers = [100, 200, 300]; 4 | List evens = [2, 4, 6, 8, 10]; 5 | 6 | List planets = ['Earth', 'Jupiter', 'Mars', 'Saturn']; 7 | List otherPlanets = ['Venus', 'Mercury', 'Neptune']; 8 | 9 | //2. 리스트 기본 사용 10 | print('numbers are $numbers'); 11 | print('first number is ${numbers[0]}'); 12 | print('last number is ${numbers[numbers.length -1]}'); 13 | //print('last number is ${numbers[-1]}'); //not working!! 14 | 15 | for (int each in evens) { 16 | print('each even number is $each'); 17 | } 18 | 19 | evens.forEach((each) => print('each even number is $each')); 20 | 21 | //3. 메서드 호출 22 | 23 | 24 | //4. 리스트 그외 활용 25 | //List evenFromZero = [0, ...evens]; //dart 2.3 26 | 27 | List allPlanets = planets + otherPlanets; 28 | print('All planets are $allPlanets'); 29 | } 30 | -------------------------------------------------------------------------------- /dart_lang/lib/map_example.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | //1. 맵 선언 3 | Map intMap = { 4 | 0: 'AAA', 5 | 50: 'BBB', 6 | 100: 'CCC', 7 | }; 8 | 9 | //2. 맵 기본 사용 10 | print('intMap is $intMap'); 11 | print('intMap[50] : ${intMap[50]}'); 12 | intMap.update(50, (val) => 'DDD' ); 13 | 14 | //3. 사용자 정의 클래스 활용 15 | Map students = { 16 | 'jake': Student('Jake', 'Warton', 'jake@gmail.com'), 17 | 'tony': Student('Tony', 'Stark', 'tony@gmail.com'), 18 | 'kent': Student('Kent', 'Beck', 'kent@gmail.com'), 19 | }; 20 | 21 | String fullName = students['jake'].firstName + ' ' + 22 | students['jake'].lastName; 23 | print('jake\'s full name is $fullName'); 24 | 25 | String email = students['kent'].email; 26 | print('Kent\'s email is $email'); 27 | } 28 | 29 | class Student { 30 | String firstName; 31 | String lastName; 32 | String email; 33 | 34 | Student(this.firstName, this.lastName, this.email); 35 | } 36 | -------------------------------------------------------------------------------- /dart_lang/lib/operator_basic.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | //1. 할당, 산술 연산자 3 | int num = 99; 4 | num += 1; 5 | print('num = $num'); 6 | 7 | //2. 관계 연산자 8 | const double PIE = 3.14; 9 | if (PIE >= 3) { 10 | print('PIE는 3 이상이다'); 11 | } 12 | 13 | //3. 논리 연산자 14 | const String PASSWORD = '1234'; 15 | String _input = '12345'; 16 | if (_input == PASSWORD) { 17 | print('로그인 성공'); 18 | } else { 19 | print('비밀 번호를 다시 입력하세요'); 20 | } 21 | 22 | //4. 삼항 연산자 23 | String _nextInput = '1234'; 24 | String _loginResult = PASSWORD == _nextInput ? '로그인 성공': '비밀번호를 다시 입력하세요'; 25 | print(_loginResult); 26 | } -------------------------------------------------------------------------------- /dart_lang/lib/operator_ext.dart: -------------------------------------------------------------------------------- 1 | import 'atm_v1.dart'; //Account 클래스 임포트 2 | 3 | void main() { 4 | //1. 타입 테스트 연산자 5 | var account = Account('111-222-33-01', 50000); 6 | if (account is Account) { 7 | String name = account.accountNumber; 8 | int amount = (account as Account).balance; //불필요한 캐스팅 9 | print('account name is $name , amount is $amount'); 10 | } 11 | 12 | //2. if null 연산자 13 | String loginAccount = null; 14 | String playerName = loginAccount ?? 'Guest'; 15 | print('Login Player is $playerName'); 16 | 17 | //3. 캐스케이드 연산자 18 | Account account2 = Account('222-333-33-01', 60000) 19 | ..deposit(5000) 20 | ..transfer(account, 10000) 21 | ..withdraw(5000); 22 | print('account 2 balance is ${account2.balance}'); 23 | 24 | //4. 조건적 맴버 접근 연산자 25 | Account account3 = null; 26 | print('account 3 is ${account3?.accountNumber}'); 27 | } 28 | -------------------------------------------------------------------------------- /dart_lang/lib/set_example.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | //1. 집합 선언 3 | Set naturalNumbers = {1, 2, 3, 4, 1}; //실제로는 {1, 2, 3, 4} 임 4 | Set ids = {"X-3", "X-2", "X-1"}; 5 | 6 | //2. 집합 사용 7 | print('numbers are $naturalNumbers'); 8 | print('ids are $ids'); //not sorted 9 | //print('first number is ${numbers[0]}'); //not indexed 10 | 11 | for (int each in naturalNumbers) { 12 | print('each number is $each'); 13 | } 14 | 15 | //Set integers = { 0 } + naturalNumbers; // + not defined 16 | 17 | //3. 메서드 호출 18 | 19 | 20 | //4. 수학적 집합의 활용 21 | Set a = {100, 200, 300}; 22 | Set b = {100, 200, 500, 1000}; 23 | 24 | print('a union b = ${a.union(b)}'); 25 | print('a intersection b = ${a.intersection(b)}'); 26 | print('a difference b = ${a.difference(b)}'); 27 | } -------------------------------------------------------------------------------- /dart_lang/test/atm_v1_test_all.dart: -------------------------------------------------------------------------------- 1 | import 'package:test/test.dart'; 2 | import 'package:dart_lang/atm_v1.dart'; 3 | 4 | void main() { 5 | test('계좌 생성 테스트', () { 6 | String accountName = '117-123-1'; 7 | int amount = 20000; 8 | 9 | Account account = Account(accountName, amount); 10 | 11 | expect(account.accountNumber, equals(accountName)); 12 | expect(account.balance, equals(amount)); 13 | }); 14 | 15 | test('계좌 인출 테스트', () { 16 | String accountName = '117-123-1'; 17 | int amount = 20000; 18 | int withdraw = 7000; 19 | 20 | Account account = Account(accountName, amount); 21 | account.withdraw(withdraw); 22 | 23 | expect(account.balance, equals(amount - withdraw)); 24 | }); 25 | 26 | test('계좌 입금 테스트', () { 27 | String accountName = '117-123-1'; 28 | int amount = 20000; 29 | int deposit = 7000; 30 | 31 | Account account = Account(accountName, amount); 32 | account.deposit(deposit); 33 | 34 | expect(account.balance, equals(amount + deposit)); 35 | }); 36 | 37 | test('계좌 이체 테스트', () { 38 | Account account1 = Account('117-123-1', 20000); 39 | Account account2 = Account('117-123-2', 5000); 40 | 41 | account1.transfer(account2, 5000); 42 | 43 | expect(account1.balance, equals(20000 - 5000)); 44 | expect(account2.balance, equals(5000 + 5000)); 45 | }); 46 | } 47 | -------------------------------------------------------------------------------- /dart_lang/test/atm_v1_test_single.dart: -------------------------------------------------------------------------------- 1 | import 'package:test/test.dart'; 2 | import 'package:dart_lang/atm_v1.dart'; 3 | 4 | void main() { 5 | test('계좌 생성 테스트', () { 6 | String accountName = '117-123-1'; 7 | int amount = 20000; 8 | 9 | Account account = Account(accountName, amount); 10 | 11 | expect(account.accountNumber, equals(accountName)); 12 | expect(account.balance, equals(amount)); 13 | }); 14 | } -------------------------------------------------------------------------------- /dart_lang/test/atm_v2_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:test/test.dart'; 2 | import 'package:dart_lang/atm_v2.dart'; 3 | 4 | void main() { 5 | test('계좌인출: 잔액보다 큰 금액을 인출하면 안된다', () { 6 | Account account = Account('111-222', 5000); 7 | int orgBalance = account.balance; 8 | 9 | account.withdraw(orgBalance + 1); 10 | expect(account.balance, equals(orgBalance)); 11 | }); 12 | 13 | test('계좌입금: 음수의 금액을 입금하면 안된다', () { 14 | const int orgBalance = 5000; 15 | Account account = Account('111-222', orgBalance)..deposit(-1); 16 | 17 | expect(orgBalance, equals(account.balance)); 18 | }); 19 | } 20 | -------------------------------------------------------------------------------- /hello_flutter/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | .dart_tool/ 26 | .flutter-plugins 27 | .packages 28 | .pub-cache/ 29 | .pub/ 30 | /build/ 31 | 32 | # Web related 33 | lib/generated_plugin_registrant.dart 34 | 35 | # Exceptions to above rules. 36 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 37 | -------------------------------------------------------------------------------- /hello_flutter/.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: 9e0df259df9c521d0ffbdf5ba664f6ab30143884 8 | channel: master 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /hello_flutter/README.md: -------------------------------------------------------------------------------- 1 | # hello_flutter 2 | 3 | A new Flutter application. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /hello_flutter/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | -------------------------------------------------------------------------------- /hello_flutter/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /hello_flutter/android/app/src/main/java/com/yudong80/hello_flutter/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.yudong80.hello_flutter; 2 | 3 | import androidx.annotation.NonNull; 4 | import io.flutter.embedding.android.FlutterActivity; 5 | import io.flutter.embedding.engine.FlutterEngine; 6 | import io.flutter.plugins.GeneratedPluginRegistrant; 7 | 8 | public class MainActivity extends FlutterActivity { 9 | @Override 10 | public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) { 11 | GeneratedPluginRegistrant.registerWith(flutterEngine); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /hello_flutter/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /hello_flutter/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /hello_flutter/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /hello_flutter/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /hello_flutter/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /hello_flutter/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /hello_flutter/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /hello_flutter/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /hello_flutter/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.5.0' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | rootProject.buildDir = '../build' 20 | subprojects { 21 | project.buildDir = "${rootProject.buildDir}/${project.name}" 22 | } 23 | subprojects { 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /hello_flutter/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.enableR8=true 3 | android.useAndroidX=true 4 | android.enableJetifier=true 5 | -------------------------------------------------------------------------------- /hello_flutter/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 | -------------------------------------------------------------------------------- /hello_flutter/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /hello_flutter/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 | -------------------------------------------------------------------------------- /hello_flutter/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 | -------------------------------------------------------------------------------- /hello_flutter/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /hello_flutter/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /hello_flutter/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /hello_flutter/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #import "AppDelegate.h" 2 | #import "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /hello_flutter/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 | -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/hello_flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /hello_flutter/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. -------------------------------------------------------------------------------- /hello_flutter/ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /hello_flutter/lib/simple_app.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | void main() => 4 | runApp(MaterialApp( 5 | title: 'Hello Flutter', 6 | home: Scaffold( 7 | appBar: AppBar(title: Text('Hello Flutter')), 8 | body: Text('Hello Flutter'), 9 | ), 10 | )); -------------------------------------------------------------------------------- /hello_flutter/lib/stateless_to_stateful_widget_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | void main() => runApp(MaterialApp( 4 | title: 'Stateless -> Stateful 위젯 데모', 5 | home: Scaffold( 6 | appBar: AppBar(title: Text('Stateless -> Stateful 위젯 데모')), 7 | body: _FirstStatefulWidget(), 8 | ), 9 | )); 10 | 11 | class _FirstStatefulWidget extends StatefulWidget { 12 | @override 13 | State createState() => _FirstStatefulWidgetState(); 14 | } 15 | 16 | class _FirstStatefulWidgetState extends State<_FirstStatefulWidget> { 17 | @override 18 | Widget build(BuildContext context) { 19 | return Text('이것은 stateful 위젯입니다'); 20 | } 21 | } -------------------------------------------------------------------------------- /hello_flutter/lib/stateless_widget_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | void main() => runApp(MaterialApp( 4 | title: 'Stateless Widget Demo', 5 | home: Scaffold( 6 | appBar: AppBar(title: Text('Stateless 위젯 데모')), 7 | body: _FirstStatelessWidget(), 8 | ), 9 | )); 10 | 11 | class _FirstStatelessWidget extends StatelessWidget { 12 | @override 13 | Widget build(BuildContext context) { 14 | return Text('이것은 stateless 위젯입니다'); 15 | } 16 | } -------------------------------------------------------------------------------- /hello_flutter/test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:hello_flutter/main.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(MyApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /layout_widgets/.flutter-plugins-dependencies: -------------------------------------------------------------------------------- 1 | {"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"contacts_service","dependencies":[]},{"name":"permission_handler","dependencies":[]}]} -------------------------------------------------------------------------------- /layout_widgets/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | .dart_tool/ 26 | .flutter-plugins 27 | .packages 28 | .pub-cache/ 29 | .pub/ 30 | /build/ 31 | 32 | # Web related 33 | lib/generated_plugin_registrant.dart 34 | 35 | # Exceptions to above rules. 36 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 37 | -------------------------------------------------------------------------------- /layout_widgets/.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: 9e0df259df9c521d0ffbdf5ba664f6ab30143884 8 | channel: master 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /layout_widgets/README.md: -------------------------------------------------------------------------------- 1 | # layout_widgets 2 | 3 | A new Flutter application. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /layout_widgets/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | -------------------------------------------------------------------------------- /layout_widgets/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /layout_widgets/android/app/src/main/java/com/yudong80/layout_widgets/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.yudong80.layout_widgets; 2 | 3 | import androidx.annotation.NonNull; 4 | import io.flutter.embedding.android.FlutterActivity; 5 | import io.flutter.embedding.engine.FlutterEngine; 6 | import io.flutter.plugins.GeneratedPluginRegistrant; 7 | 8 | public class MainActivity extends FlutterActivity { 9 | @Override 10 | public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) { 11 | GeneratedPluginRegistrant.registerWith(flutterEngine); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /layout_widgets/android/app/src/main/kotlin/com/yudong80/layout_widgets/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.yudong80.layout_widgets 2 | 3 | import androidx.annotation.NonNull; 4 | import io.flutter.embedding.android.FlutterActivity 5 | import io.flutter.embedding.engine.FlutterEngine 6 | import io.flutter.plugins.GeneratedPluginRegistrant 7 | 8 | class MainActivity: FlutterActivity() { 9 | override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { 10 | GeneratedPluginRegistrant.registerWith(flutterEngine); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /layout_widgets/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /layout_widgets/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /layout_widgets/android/app/src/main/res/mipmap-hdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/android/app/src/main/res/mipmap-hdpi/launcher_icon.png -------------------------------------------------------------------------------- /layout_widgets/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /layout_widgets/android/app/src/main/res/mipmap-mdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/android/app/src/main/res/mipmap-mdpi/launcher_icon.png -------------------------------------------------------------------------------- /layout_widgets/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /layout_widgets/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png -------------------------------------------------------------------------------- /layout_widgets/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /layout_widgets/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png -------------------------------------------------------------------------------- /layout_widgets/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /layout_widgets/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png -------------------------------------------------------------------------------- /layout_widgets/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /layout_widgets/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /layout_widgets/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.5.0' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | rootProject.buildDir = '../build' 20 | subprojects { 21 | project.buildDir = "${rootProject.buildDir}/${project.name}" 22 | } 23 | subprojects { 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /layout_widgets/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.enableR8=true 3 | android.useAndroidX=true 4 | android.enableJetifier=true 5 | -------------------------------------------------------------------------------- /layout_widgets/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 | -------------------------------------------------------------------------------- /layout_widgets/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /layout_widgets/assets/autumn-leaves.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/assets/autumn-leaves.jpg -------------------------------------------------------------------------------- /layout_widgets/assets/fonts/Poppins-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/assets/fonts/Poppins-Bold.ttf -------------------------------------------------------------------------------- /layout_widgets/assets/fonts/Poppins-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/assets/fonts/Poppins-Regular.ttf -------------------------------------------------------------------------------- /layout_widgets/assets/fonts/Raleway-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/assets/fonts/Raleway-Italic.ttf -------------------------------------------------------------------------------- /layout_widgets/assets/fonts/Raleway-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/assets/fonts/Raleway-Regular.ttf -------------------------------------------------------------------------------- /layout_widgets/assets/icon/fireworks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/assets/icon/fireworks.png -------------------------------------------------------------------------------- /layout_widgets/assets/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/assets/logo.jpg -------------------------------------------------------------------------------- /layout_widgets/assets/london.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/assets/london.jpg -------------------------------------------------------------------------------- /layout_widgets/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 | -------------------------------------------------------------------------------- /layout_widgets/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 | -------------------------------------------------------------------------------- /layout_widgets/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /layout_widgets/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /layout_widgets/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /layout_widgets/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /layout_widgets/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 | -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /layout_widgets/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 | -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/layout_widgets/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /layout_widgets/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. -------------------------------------------------------------------------------- /layout_widgets/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" -------------------------------------------------------------------------------- /layout_widgets/lib/button_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | void main() => runApp(ButtonDemo()); 4 | 5 | class ButtonDemo extends StatefulWidget { 6 | @override 7 | State createState() => ButtonDemoState(); 8 | } 9 | 10 | class ButtonDemoState extends State { 11 | static const String _title = "Button 위젯 데모"; 12 | String _buttonState = "OFF"; 13 | 14 | void onClick() { 15 | print('onClick()'); 16 | setState(() { 17 | if (_buttonState == 'OFF') { 18 | _buttonState = 'ON'; 19 | } else { 20 | _buttonState = 'OFF'; 21 | } 22 | }); 23 | } 24 | 25 | @override 26 | Widget build(BuildContext context) { 27 | return MaterialApp( 28 | title: _title, 29 | debugShowCheckedModeBanner: false, 30 | home: Scaffold( 31 | appBar: AppBar(title: Text(_title)), 32 | body: Column( 33 | crossAxisAlignment: CrossAxisAlignment.center, 34 | children: [ 35 | RaisedButton( 36 | child: Text('사각 버튼'), 37 | onPressed: onClick, 38 | ), 39 | Text('$_buttonState'), 40 | RaisedButton( 41 | child: Text("둥근 버튼"), 42 | onPressed: onClick, 43 | shape: RoundedRectangleBorder( 44 | borderRadius: new BorderRadius.circular(30.0))) 45 | ], 46 | ), 47 | )); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /layout_widgets/lib/container_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | void main() => runApp(ContainerDemo()); 4 | 5 | class ContainerDemo extends StatelessWidget { 6 | static const String _title = "Container 위젯 데모"; 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return MaterialApp( 11 | title: _title, 12 | debugShowCheckedModeBanner: false, 13 | home: Scaffold( 14 | appBar: AppBar(title: Text(_title)), 15 | body: Column( 16 | crossAxisAlignment: CrossAxisAlignment.start, 17 | children: [ 18 | Container( 19 | child: Text('단순 컨테이터'), 20 | padding: EdgeInsets.only(left: 10, top: 20, bottom: 20), 21 | ), 22 | Container( 23 | color: Colors.green, 24 | padding: EdgeInsets.symmetric(vertical: 30, horizontal: 50), 25 | child: Container( 26 | color: Colors.yellow, 27 | child: Text('중첩 컨네이너'), 28 | ), 29 | ), 30 | ], 31 | ) 32 | ), 33 | ); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /layout_widgets/lib/image_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | void main() => runApp(ImageDemo()); 4 | 5 | class ImageDemo extends StatelessWidget { 6 | static const String _title = "Image 위젯 데모"; 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return MaterialApp( 11 | title: _title, 12 | debugShowCheckedModeBanner: false, 13 | home: Scaffold( 14 | appBar: AppBar(title: Text(_title)), 15 | body: Column( 16 | crossAxisAlignment: CrossAxisAlignment.center, 17 | children: [ 18 | Image.asset('assets/london.jpg'), 19 | Image.asset('assets/autumn-leaves.jpg'), 20 | ], 21 | ), 22 | ) 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /layout_widgets/lib/listview_static_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | void main() => runApp(ListViewStaticDemo()); 4 | 5 | class ListViewStaticDemo extends StatelessWidget { 6 | static const String _title = "정적 ListView 위젯 데모"; 7 | static const List _data = [ 8 | 'Mercury', 9 | 'Venus', 10 | 'Earth', 11 | 'Mars', 12 | 'Jupiter', 13 | 'Saturn', 14 | 'Uranus', 15 | 'Neptune', 16 | 'Pluto', 17 | ]; 18 | 19 | Widget _buildStaticListView() { 20 | return ListView.builder( 21 | itemCount: _data.length, 22 | itemBuilder: (BuildContext _context, int i) { 23 | return ListTile( 24 | title: Text(_data[i], 25 | style: TextStyle( 26 | fontSize: 23, 27 | )), 28 | trailing: Icon( 29 | Icons.favorite_border, 30 | ), 31 | ); 32 | }, 33 | ); 34 | } 35 | 36 | @override 37 | Widget build(BuildContext context) { 38 | return MaterialApp( 39 | title: _title, 40 | debugShowCheckedModeBanner: false, 41 | home: Scaffold( 42 | appBar: AppBar(title: Text(_title)), 43 | body: _buildStaticListView(), 44 | )); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /layout_widgets/lib/material_app_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | void main() => runApp(MyMaterialApp()); 4 | 5 | class MyMaterialApp extends StatelessWidget { 6 | @override 7 | Widget build(BuildContext context) { 8 | return MaterialApp( 9 | title: '머티리얼 앱', 10 | home: Container( 11 | padding: EdgeInsets.all(20), 12 | child: Text('이제는 머티리얼 앱입니다'), 13 | ), 14 | ); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /layout_widgets/lib/material_scaffold_app_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | void main() => runApp(MaterialScaffoldApp()); 4 | 5 | class MaterialScaffoldApp extends StatelessWidget { 6 | @override 7 | Widget build(BuildContext context) { 8 | return MaterialApp( 9 | title: '머터리얼 앱', 10 | home: Scaffold( 11 | appBar: AppBar(title: Text('진짜 머터리얼 앱')), 12 | body: Text('이제야 재대로 된 머터리얼 앱입니다.'), 13 | ), 14 | ); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /layout_widgets/lib/no_material_app_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/widgets.dart'; 2 | 3 | void main() => runApp(NoMaterialApp()); 4 | 5 | class NoMaterialApp extends StatelessWidget { 6 | @override 7 | Widget build(BuildContext context) { 8 | return Container( 9 | padding: EdgeInsets.all(20), 10 | child: Text('이것은 머티리얼 앱이 아닙니다.', 11 | textDirection: TextDirection.ltr, 12 | ), 13 | ); 14 | } 15 | } -------------------------------------------------------------------------------- /layout_widgets/lib/simple_theme_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | void main() => runApp(SimpleThemeApp()); 4 | 5 | class SimpleThemeApp extends StatelessWidget { 6 | @override 7 | Widget build(BuildContext context) { 8 | return MaterialApp( 9 | title: 'SimpleThemeApp', 10 | theme: ThemeData( 11 | brightness: Brightness.light, 12 | primaryColor: Colors.purple, 13 | accentColor: Colors.cyan[600], 14 | fontFamily: 'Raleway'), 15 | darkTheme: ThemeData( 16 | brightness: Brightness.dark, 17 | ), 18 | home: Scaffold( 19 | appBar: AppBar(title: Text('Simple Theme App')), 20 | body: Center( 21 | child: Text( 22 | 'This is my custom fonts.', 23 | style: TextStyle( 24 | fontFamily: 'Poppins', 25 | fontSize: 25, 26 | fontWeight: FontWeight.bold), 27 | ), 28 | ), 29 | ), 30 | ); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /layout_widgets/lib/text_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | void main() => runApp(TextDemo()); 4 | 5 | class TextDemo extends StatelessWidget { 6 | static const String _title = "Text 위젯 데모"; 7 | static const String _name = 'Tony Stark'; 8 | static const String _longText = """ 9 | 플러터(Flutter)는 구글이 개발한 오픈 소스 모바일 애플리케이션 개발 프레임워크이다. 10 | 안드로이드, iOS용 애플리케이션 개발을 위해, 11 | 또 구글 푸크시아용 애플리케이션 개발의 주된 방식으로 사용된다.(위키백과) 12 | """; 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return MaterialApp( 17 | title: _title, 18 | home: Scaffold( 19 | appBar: AppBar(title: Text(_title)), 20 | body: Column( 21 | crossAxisAlignment: CrossAxisAlignment.start, 22 | children: [ 23 | Text("단순 텍스트 표시"), //simple text 24 | Text( 25 | 'Styled Text with $_name', //styled text 26 | style: TextStyle( 27 | color: Colors.black, 28 | fontSize: 20.0, //dp 29 | background: Paint() 30 | ..color = Color(0xFFDCEDC8) 31 | ..style = PaintingStyle.fill, 32 | fontWeight: FontWeight.bold), 33 | ), 34 | Text( 35 | _longText, 36 | overflow: TextOverflow.ellipsis, //text overflow 37 | ), 38 | ], 39 | ), 40 | ) 41 | ); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /navigation_state/.flutter-plugins-dependencies: -------------------------------------------------------------------------------- 1 | {"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"contacts_service","dependencies":[]}]} -------------------------------------------------------------------------------- /navigation_state/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | .dart_tool/ 26 | .flutter-plugins 27 | .packages 28 | .pub-cache/ 29 | .pub/ 30 | /build/ 31 | 32 | # Web related 33 | lib/generated_plugin_registrant.dart 34 | 35 | # Exceptions to above rules. 36 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 37 | -------------------------------------------------------------------------------- /navigation_state/.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: 9e0df259df9c521d0ffbdf5ba664f6ab30143884 8 | channel: master 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /navigation_state/README.md: -------------------------------------------------------------------------------- 1 | # navigation_state 2 | 3 | A new Flutter application. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /navigation_state/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | -------------------------------------------------------------------------------- /navigation_state/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /navigation_state/android/app/src/main/java/com/yudong80/navigation_state/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.yudong80.navigation_state; 2 | 3 | import androidx.annotation.NonNull; 4 | import io.flutter.embedding.android.FlutterActivity; 5 | import io.flutter.embedding.engine.FlutterEngine; 6 | import io.flutter.plugins.GeneratedPluginRegistrant; 7 | 8 | public class MainActivity extends FlutterActivity { 9 | @Override 10 | public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) { 11 | GeneratedPluginRegistrant.registerWith(flutterEngine); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /navigation_state/android/app/src/main/kotlin/com/yudong80/navigation_state/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.yudong80.navigation_state 2 | 3 | import androidx.annotation.NonNull; 4 | import io.flutter.embedding.android.FlutterActivity 5 | import io.flutter.embedding.engine.FlutterEngine 6 | import io.flutter.plugins.GeneratedPluginRegistrant 7 | 8 | class MainActivity: FlutterActivity() { 9 | override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { 10 | GeneratedPluginRegistrant.registerWith(flutterEngine); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /navigation_state/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /navigation_state/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /navigation_state/android/app/src/main/res/mipmap-hdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/android/app/src/main/res/mipmap-hdpi/launcher_icon.png -------------------------------------------------------------------------------- /navigation_state/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /navigation_state/android/app/src/main/res/mipmap-mdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/android/app/src/main/res/mipmap-mdpi/launcher_icon.png -------------------------------------------------------------------------------- /navigation_state/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /navigation_state/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png -------------------------------------------------------------------------------- /navigation_state/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /navigation_state/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png -------------------------------------------------------------------------------- /navigation_state/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /navigation_state/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png -------------------------------------------------------------------------------- /navigation_state/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /navigation_state/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /navigation_state/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.5.0' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | rootProject.buildDir = '../build' 20 | subprojects { 21 | project.buildDir = "${rootProject.buildDir}/${project.name}" 22 | } 23 | subprojects { 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /navigation_state/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.enableR8=true 3 | android.useAndroidX=true 4 | android.enableJetifier=true 5 | -------------------------------------------------------------------------------- /navigation_state/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 | -------------------------------------------------------------------------------- /navigation_state/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /navigation_state/assets/icon/hot-air-balloon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/assets/icon/hot-air-balloon.png -------------------------------------------------------------------------------- /navigation_state/assets/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/assets/logo.jpg -------------------------------------------------------------------------------- /navigation_state/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 | -------------------------------------------------------------------------------- /navigation_state/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 | -------------------------------------------------------------------------------- /navigation_state/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /navigation_state/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /navigation_state/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /navigation_state/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /navigation_state/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 | -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /navigation_state/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 | -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/navigation_state/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /navigation_state/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. -------------------------------------------------------------------------------- /navigation_state/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" -------------------------------------------------------------------------------- /navigation_state/lib/contacts_demo_v3.dart: -------------------------------------------------------------------------------- 1 | import 'package:contacts_service/contacts_service.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'page_contact_list.dart'; 4 | import 'page_contact_detail.dart'; 5 | 6 | void main() => runApp(ContactsDemoV3()); 7 | 8 | class ContactsDemoV3 extends StatelessWidget { 9 | @override 10 | Widget build(BuildContext context) { 11 | return MaterialApp( 12 | debugShowCheckedModeBanner: false, 13 | home: ContactListPage(), 14 | onGenerateRoute: (RouteSettings settings) { 15 | if (ContactDetailPage.routeName == settings.name) { 16 | Contact c = settings.arguments; 17 | return MaterialPageRoute( 18 | builder: (context) => ContactDetailPage(c)); 19 | } 20 | return _noWay; 21 | }); 22 | } 23 | 24 | final MaterialPageRoute _noWay = MaterialPageRoute( 25 | builder: (_) => Scaffold( 26 | body: Center( 27 | child: Text('경로가 없습니다'), 28 | ), 29 | ), 30 | ); 31 | } 32 | -------------------------------------------------------------------------------- /navigation_state/lib/login_form_demo_v2.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:provider/provider.dart'; 3 | 4 | import 'page_login.dart'; 5 | import 'page_main.dart'; 6 | import 'state_simple.dart'; 7 | 8 | void main() => runApp(loginFormApp); 9 | 10 | var loginFormApp = ChangeNotifierProvider( 11 | create: (context) => SimpleState(), 12 | child: StateLoginDemo(), 13 | ); 14 | 15 | const String ROOT_PAGE = '/'; 16 | const String MAIN_PAGE = '/main'; 17 | 18 | class StateLoginDemo extends StatelessWidget { 19 | 20 | @override 21 | Widget build(BuildContext context) { 22 | return MaterialApp( 23 | title: '로그인 폼', 24 | debugShowCheckedModeBanner: false, 25 | initialRoute: ROOT_PAGE, 26 | routes: { 27 | ROOT_PAGE : (context) => LoginPage(), 28 | MAIN_PAGE: (context) => MainPage(), 29 | }, 30 | ); 31 | } 32 | } -------------------------------------------------------------------------------- /navigation_state/lib/navigator_push_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | void main() => runApp(NavigatorPushDemo()); 4 | 5 | class NavigatorPushDemo extends StatelessWidget { 6 | @override 7 | Widget build(BuildContext context) { 8 | return MaterialApp( 9 | debugShowCheckedModeBanner: false, 10 | home: MainPage(), 11 | ); 12 | } 13 | } 14 | 15 | class MainPage extends StatelessWidget { 16 | _showNextPage(BuildContext context) => Navigator.push( 17 | context, MaterialPageRoute(builder: (context) => NextPage())); 18 | 19 | @override 20 | Widget build(BuildContext context) { 21 | return Scaffold( 22 | appBar: AppBar( 23 | title: Text('Navigator 기본 데모'), 24 | ), 25 | body: Center( 26 | child: RaisedButton( 27 | onPressed: () => _showNextPage(context), 28 | child: Text('다음 화면으로 이동'), 29 | ), 30 | ), 31 | ); 32 | } 33 | } 34 | 35 | class NextPage extends StatelessWidget { 36 | _backToMainPage(BuildContext context) => Navigator.pop(context); 37 | 38 | @override 39 | Widget build(BuildContext context) { 40 | return Scaffold( 41 | appBar: AppBar( 42 | title: Text('다음 페이지'), 43 | ), 44 | body: Center( 45 | child: RaisedButton( 46 | onPressed: () => _backToMainPage(context), 47 | child: Text('돌아가기'), 48 | ), 49 | ), 50 | ); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /navigation_state/lib/navigator_routes_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | void main() => runApp(NavigatorRoutesDemo()); 4 | 5 | class NavigatorRoutesDemo extends StatelessWidget { 6 | @override 7 | Widget build(BuildContext context) { 8 | return MaterialApp( 9 | debugShowCheckedModeBanner: false, 10 | initialRoute: '/', 11 | routes: { 12 | '/': (context) => MainPage(), 13 | '/next': (context) => NextPage(), 14 | }, 15 | ); 16 | } 17 | } 18 | 19 | class MainPage extends StatelessWidget { 20 | _showNextPage(BuildContext context) => Navigator.pushNamed(context, '/next'); 21 | 22 | @override 23 | Widget build(BuildContext context) { 24 | return Scaffold( 25 | appBar: AppBar( 26 | title: Text('Navigator Routes 데모'), 27 | ), 28 | body: Center( 29 | child: RaisedButton( 30 | onPressed: () => _showNextPage(context), 31 | child: Text('상세 페이지로 이동'), 32 | ), 33 | ), 34 | ); 35 | } 36 | } 37 | 38 | class NextPage extends StatelessWidget { 39 | _backToMainPage(BuildContext context) => Navigator.pop(context); 40 | 41 | @override 42 | Widget build(BuildContext context) { 43 | return Scaffold( 44 | appBar: AppBar( 45 | title: Text('다음 페이지'), 46 | ), 47 | body: Center( 48 | child: RaisedButton( 49 | onPressed: () => _backToMainPage(context), 50 | child: Text('메인 페이지로 돌아가기'), 51 | ), 52 | ), 53 | ); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /navigation_state/lib/page_contact_detail.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:contacts_service/contacts_service.dart'; 3 | 4 | class ContactDetailPage extends StatelessWidget { 5 | static const String routeName = '/contact'; 6 | 7 | ContactDetailPage(this._contact); 8 | 9 | final Contact _contact; 10 | 11 | @override 12 | Widget build(BuildContext context) { 13 | return Scaffold( 14 | appBar: AppBar(title: Text(_contact.displayName ?? "")), 15 | body: ListView( 16 | children: [ 17 | ListTile( 18 | title: Text('Name'), 19 | trailing: Text(_contact.givenName ?? ""), 20 | ), 21 | ListTile( 22 | title: Text('Phones'), 23 | trailing: Text( 24 | _contact.phones.isNotEmpty ? _contact.phones.first.value : ""), 25 | ), 26 | ListTile( 27 | title: Text('Emails'), 28 | trailing: Text( 29 | _contact.emails.isNotEmpty ? _contact.emails.first.value : ""), 30 | ), 31 | ], 32 | ), 33 | ); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /navigation_state/lib/page_main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:provider/provider.dart'; 3 | 4 | import 'state_simple.dart'; 5 | 6 | class MainPage extends StatelessWidget { 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return Scaffold( 11 | body: Center( 12 | child: Consumer ( 13 | builder: (context, state, child) { 14 | return Text('로그인 완료: ${state.email}'); 15 | }, 16 | ), 17 | ), 18 | ); 19 | } 20 | } -------------------------------------------------------------------------------- /navigation_state/lib/state_simple.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class SimpleState extends ChangeNotifier { 4 | String _email; 5 | 6 | void setEmail(String email) { 7 | _email = email; 8 | } 9 | 10 | String get email => _email; 11 | } -------------------------------------------------------------------------------- /navigation_state/test/login_form_demo_v2_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_test/flutter_test.dart'; 3 | 4 | import 'package:navigation_state/login_form_demo_v2.dart' as target; 5 | 6 | void main() { 7 | testWidgets("로그인 화면 표시 테스트", (WidgetTester tester) async { 8 | Widget form = target.loginFormApp; 9 | 10 | await tester.pumpWidget(form); 11 | 12 | expect(find.byKey(Key('email')), findsOneWidget); 13 | expect(find.byKey(Key('password')), findsOneWidget); 14 | expect(find.widgetWithText(RaisedButton, '로그인'), findsOneWidget); 15 | expect(find.widgetWithText(RaisedButton, '취소'), findsOneWidget); 16 | }); 17 | } -------------------------------------------------------------------------------- /navigation_state/test_driver/login_form_demo_v2_app.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_driver/driver_extension.dart'; 2 | import 'package:navigation_state/login_form_demo_v2.dart' as target; 3 | 4 | void main() { 5 | enableFlutterDriverExtension(); 6 | target.main(); 7 | } -------------------------------------------------------------------------------- /navigation_state/test_driver/login_form_demo_v2_app_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_driver/flutter_driver.dart'; 2 | import 'package:test/test.dart'; 3 | 4 | void main() { 5 | group('통합 테스트 > ', () { 6 | FlutterDriver driver; 7 | 8 | setUpAll(() async { 9 | driver = await FlutterDriver.connect(); 10 | }); 11 | 12 | test('로그인 테스트', () async { 13 | const email = 'flutter@gmail.com'; 14 | const ps = '1234'; 15 | 16 | //1. 이메일을 입력 17 | await driver.tap(find.byValueKey('email')); 18 | await driver.enterText(email); 19 | await driver.waitFor(find.text(email)); 20 | 21 | //2. 비밀번호를 입력 22 | await driver.tap(find.byValueKey('password')); 23 | await driver.enterText(ps); 24 | 25 | //3. 로그인 버튼을 누름 26 | await driver.tap(find.byValueKey('login')); 27 | 28 | //4. 로그인 완료 확인 29 | await driver.waitFor(find.text('로그인 완료: $email')); 30 | }); 31 | 32 | tearDownAll(() async { 33 | driver?.close(); 34 | }); 35 | }); 36 | } -------------------------------------------------------------------------------- /network_async/.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: b712a172f9694745f50505c93340883493b505e5 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /network_async/README.md: -------------------------------------------------------------------------------- 1 | # network_async 2 | 3 | A new Flutter application. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /network_async/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /network_async/android/app/src/main/java/com/yudong80/network_async/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.yudong80.network_async; 2 | 3 | import android.os.Bundle; 4 | import io.flutter.app.FlutterActivity; 5 | import io.flutter.plugins.GeneratedPluginRegistrant; 6 | 7 | public class MainActivity extends FlutterActivity { 8 | @Override 9 | protected void onCreate(Bundle savedInstanceState) { 10 | super.onCreate(savedInstanceState); 11 | GeneratedPluginRegistrant.registerWith(this); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /network_async/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /network_async/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /network_async/android/app/src/main/res/mipmap-hdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/android/app/src/main/res/mipmap-hdpi/launcher_icon.png -------------------------------------------------------------------------------- /network_async/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /network_async/android/app/src/main/res/mipmap-mdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/android/app/src/main/res/mipmap-mdpi/launcher_icon.png -------------------------------------------------------------------------------- /network_async/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /network_async/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png -------------------------------------------------------------------------------- /network_async/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /network_async/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png -------------------------------------------------------------------------------- /network_async/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /network_async/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png -------------------------------------------------------------------------------- /network_async/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /network_async/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /network_async/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.2.1' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | rootProject.buildDir = '../build' 20 | subprojects { 21 | project.buildDir = "${rootProject.buildDir}/${project.name}" 22 | } 23 | subprojects { 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /network_async/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.enableR8=true 3 | android.useAndroidX=true 4 | android.enableJetifier=true -------------------------------------------------------------------------------- /network_async/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip 7 | -------------------------------------------------------------------------------- /network_async/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /network_async/assets/icon/rugby-ball.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/assets/icon/rugby-ball.png -------------------------------------------------------------------------------- /network_async/assets/icon/subway.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/assets/icon/subway.png -------------------------------------------------------------------------------- /network_async/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 | -------------------------------------------------------------------------------- /network_async/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /network_async/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /network_async/ios/Flutter/flutter_export_environment.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # This is a generated file; do not edit or check into version control. 3 | export "FLUTTER_ROOT=D:\work\flutter" 4 | export "FLUTTER_APPLICATION_PATH=D:\work\agit\flutter_programming\network_async" 5 | export "FLUTTER_TARGET=lib\main.dart" 6 | export "FLUTTER_BUILD_DIR=build" 7 | export "SYMROOT=${SOURCE_ROOT}/../build\ios" 8 | export "FLUTTER_FRAMEWORK_DIR=D:\work\flutter\bin\cache\artifacts\engine\ios" 9 | export "FLUTTER_BUILD_NAME=1.0.0" 10 | export "FLUTTER_BUILD_NUMBER=1" 11 | -------------------------------------------------------------------------------- /network_async/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /network_async/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /network_async/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /network_async/ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #include "AppDelegate.h" 2 | #include "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /network_async/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 | -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /network_async/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/network_async/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /network_async/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. -------------------------------------------------------------------------------- /network_async/ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /network_async/lib/api/subway_api.dart: -------------------------------------------------------------------------------- 1 | const String _urlPrefix = 'http://swopenapi.seoul.go.kr/api/subway/'; 2 | const String _userKey = 'sample'; 3 | const String _urlSuffix = '/json/realtimeStationArrival/0/5/'; 4 | const String defaultStation = '광화문'; 5 | 6 | const int STATUS_OK = 200; 7 | 8 | String buildUrl(String station) { 9 | StringBuffer sb = StringBuffer(); 10 | sb.write(_urlPrefix); 11 | sb.write(_userKey); 12 | sb.write(_urlSuffix); 13 | sb.write(station); 14 | return sb.toString(); 15 | } -------------------------------------------------------------------------------- /network_async/lib/http_basic_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:http/http.dart' as http; 2 | 3 | void main() async { 4 | String url = 'https://jsonplaceholder.typicode.com/todos/1'; 5 | var response = await http.get(url); 6 | print('status = ${response.statusCode}'); 7 | print('response = ${response.body}'); 8 | } -------------------------------------------------------------------------------- /network_async/lib/http_simple_json_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:http/http.dart' as http; 2 | import 'dart:convert'; 3 | 4 | void main() async { 5 | String url = 'https://jsonplaceholder.typicode.com/todos/1'; 6 | var response = await http.get(url); 7 | 8 | Map data = jsonDecode(response.body); 9 | print('userId : ${data['userId']}'); 10 | print('id : ${data['id']}'); 11 | print('title : ${data['title']}'); 12 | print('complete : ${data['completed']}'); 13 | } 14 | -------------------------------------------------------------------------------- /network_async/lib/http_subway_demo_v2.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'page_subway_main.dart'; 3 | 4 | void main() => runApp(SubwayDemo()); 5 | 6 | class SubwayDemo extends StatelessWidget { 7 | @override 8 | Widget build(BuildContext context) { 9 | return MaterialApp( 10 | title: '지하철 실시간 정보', 11 | home: MainPage(), 12 | ); 13 | } 14 | } 15 | 16 | -------------------------------------------------------------------------------- /network_async/lib/http_subway_demo_v3.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'page_subway_info.dart'; 3 | 4 | void main() => runApp(SubwayDemo()); 5 | 6 | class SubwayDemo extends StatelessWidget { 7 | @override 8 | Widget build(BuildContext context) { 9 | return MaterialApp( 10 | title: '지하철 실시간 정보', 11 | debugShowCheckedModeBanner: false, 12 | home: MainPage(), 13 | ); 14 | } 15 | } 16 | 17 | -------------------------------------------------------------------------------- /network_async/lib/json_parsing_demo.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | 3 | const String header = ''' 4 | {"errorMessage": 5 | { 6 | "status":200, 7 | "code":"INFO-000", 8 | "message":"정상 처리되었습니다.", 9 | "link":"", 10 | "developerMessage":"", 11 | "total":4 12 | } 13 | } 14 | '''; 15 | 16 | void main() { 17 | var parsed = jsonDecode(header); 18 | Map errorMessage = parsed['errorMessage']; 19 | 20 | print('status : ${errorMessage['status']}'); 21 | print('code : ${errorMessage['code']}'); 22 | print('message : ${errorMessage['message']}'); 23 | print('total : ${errorMessage['total']}'); 24 | } -------------------------------------------------------------------------------- /network_async/lib/model/subway_arrival.dart: -------------------------------------------------------------------------------- 1 | class SubwayArrival { 2 | int _rowNum; 3 | String _subwayId; 4 | String _trainLineNm; 5 | String _subwayHeading; 6 | String _arvlMsg2; 7 | 8 | SubwayArrival(this._rowNum, this._subwayId, this._trainLineNm, 9 | this._subwayHeading, this._arvlMsg2); 10 | 11 | int get rowNum => _rowNum; 12 | 13 | String get subwayId => _subwayId; 14 | 15 | String get trainLineNm => _trainLineNm; 16 | 17 | String get subwayHeading => _subwayHeading; 18 | 19 | String get arvlMsg2 => _arvlMsg2; 20 | } -------------------------------------------------------------------------------- /network_async/test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:network_async/main.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(MyApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /platform_channels/.flutter-plugins-dependencies: -------------------------------------------------------------------------------- 1 | {"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"geolocator","dependencies":["google_api_availability","location_permissions"]},{"name":"google_api_availability","dependencies":[]},{"name":"location_permissions","dependencies":[]},{"name":"permission_handler","dependencies":[]}]} -------------------------------------------------------------------------------- /platform_channels/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | .dart_tool/ 26 | .flutter-plugins 27 | .packages 28 | .pub-cache/ 29 | .pub/ 30 | /build/ 31 | 32 | # Web related 33 | lib/generated_plugin_registrant.dart 34 | 35 | # Exceptions to above rules. 36 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 37 | -------------------------------------------------------------------------------- /platform_channels/.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: 9e0df259df9c521d0ffbdf5ba664f6ab30143884 8 | channel: master 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /platform_channels/README.md: -------------------------------------------------------------------------------- 1 | # platform_channels 2 | 3 | A new Flutter application. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /platform_channels/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | -------------------------------------------------------------------------------- /platform_channels/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /platform_channels/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /platform_channels/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /platform_channels/android/app/src/main/res/mipmap-hdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/android/app/src/main/res/mipmap-hdpi/launcher_icon.png -------------------------------------------------------------------------------- /platform_channels/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /platform_channels/android/app/src/main/res/mipmap-mdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/android/app/src/main/res/mipmap-mdpi/launcher_icon.png -------------------------------------------------------------------------------- /platform_channels/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /platform_channels/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png -------------------------------------------------------------------------------- /platform_channels/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /platform_channels/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png -------------------------------------------------------------------------------- /platform_channels/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /platform_channels/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png -------------------------------------------------------------------------------- /platform_channels/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /platform_channels/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /platform_channels/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.5.2' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | rootProject.buildDir = '../build' 20 | subprojects { 21 | project.buildDir = "${rootProject.buildDir}/${project.name}" 22 | } 23 | subprojects { 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /platform_channels/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.enableR8=true 3 | android.useAndroidX=true 4 | android.enableJetifier=true 5 | -------------------------------------------------------------------------------- /platform_channels/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 | -------------------------------------------------------------------------------- /platform_channels/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /platform_channels/assets/icon/clownfish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/assets/icon/clownfish.png -------------------------------------------------------------------------------- /platform_channels/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 | -------------------------------------------------------------------------------- /platform_channels/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 | -------------------------------------------------------------------------------- /platform_channels/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /platform_channels/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /platform_channels/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /platform_channels/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /platform_channels/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /platform_channels/ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #import "AppDelegate.h" 2 | #import "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /platform_channels/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 | -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /platform_channels/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/platform_channels/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /platform_channels/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. -------------------------------------------------------------------------------- /platform_channels/ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /platform_channels/lib/battery_channel_demo_v1.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | void main() => runApp(BatteryPage()); 4 | 5 | class BatteryPage extends StatefulWidget { 6 | @override 7 | State createState() => BatteryPageState(); 8 | } 9 | 10 | class BatteryPageState extends State { 11 | _refresh() { 12 | print('refresh battery level'); 13 | } 14 | 15 | @override 16 | Widget build(BuildContext context) { 17 | return MaterialApp( 18 | title: '배터리 채널 데모 V1', 19 | debugShowCheckedModeBanner: false, 20 | home: Scaffold( 21 | appBar: AppBar(title: Text('배터리 채널 데모 V1')), 22 | body: Center( 23 | child: Column( 24 | mainAxisAlignment: MainAxisAlignment.center, 25 | children: [ 26 | Text('배터리 잔량: 모름'), 27 | RaisedButton( 28 | child: Text('가져오기'), 29 | onPressed: _refresh, 30 | ), 31 | ], 32 | ), 33 | ), 34 | ), 35 | ); 36 | } 37 | } -------------------------------------------------------------------------------- /platform_channels/lib/main.dart: -------------------------------------------------------------------------------- 1 | void main() {} -------------------------------------------------------------------------------- /std_library/.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: 8661d8aecd626f7f57ccbcb735553edc05a2e713 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /std_library/README.md: -------------------------------------------------------------------------------- 1 | # std_library 2 | 3 | A new Flutter application. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.io/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.io/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.io/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /std_library/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /std_library/android/app/src/main/java/com/yudong80/std_library/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.yudong80.std_library; 2 | 3 | import android.os.Bundle; 4 | import io.flutter.app.FlutterActivity; 5 | import io.flutter.plugins.GeneratedPluginRegistrant; 6 | 7 | public class MainActivity extends FlutterActivity { 8 | @Override 9 | protected void onCreate(Bundle savedInstanceState) { 10 | super.onCreate(savedInstanceState); 11 | GeneratedPluginRegistrant.registerWith(this); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /std_library/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /std_library/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /std_library/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /std_library/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /std_library/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /std_library/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /std_library/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /std_library/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /std_library/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.2.1' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | rootProject.buildDir = '../build' 20 | subprojects { 21 | project.buildDir = "${rootProject.buildDir}/${project.name}" 22 | } 23 | subprojects { 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /std_library/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | -------------------------------------------------------------------------------- /std_library/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip 7 | -------------------------------------------------------------------------------- /std_library/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /std_library/basket.json: -------------------------------------------------------------------------------- 1 | {"apple":50,"banana":10,"grape":5} -------------------------------------------------------------------------------- /std_library/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /std_library/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /std_library/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /std_library/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /std_library/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /std_library/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /std_library/ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #include "AppDelegate.h" 2 | #include "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /std_library/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 | -------------------------------------------------------------------------------- /std_library/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /std_library/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /std_library/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yudong80/flutter_programming/d21ecef016e1185b80a1d3bc1f4d440ec917d26b/std_library/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /std_library/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. -------------------------------------------------------------------------------- /std_library/ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /std_library/lib/core_package.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | //1. print 함수 내부 살펴보기 3 | print('hello'); 4 | 5 | //2. 숫자 -> 문자열 변환 6 | int num1 = 5000; 7 | double num2 = 360.1234; 8 | 9 | String num1Str = num1.toString(); 10 | String num2Str = num2.toStringAsFixed(2); 11 | print('num1 to str is $num1Str'); 12 | print('num2 to str is $num2Str'); 13 | 14 | //3. 문자 -> 숫자 변환 15 | List inputs = [ 16 | '-1', //[0] 17 | '1234', //[1] 18 | '32.25' //[2] 19 | ]; 20 | 21 | print(int.parse(inputs[0])); 22 | print(int.parse(inputs[1])); 23 | print(double.parse(inputs[2])); 24 | print(num.parse(inputs[2])); 25 | } -------------------------------------------------------------------------------- /std_library/lib/io_read_write_file_sync.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | void main() { 4 | //1. 새로운 파일 생성하기 5 | File newFile = File('temp_file.txt'); 6 | newFile.createSync(); 7 | 8 | //2. 파일을 읽기 (동기방식) 9 | File poem = File('poem.txt'); 10 | List lines = poem.readAsLinesSync(); 11 | for (String line in lines) { 12 | print(line); 13 | } 14 | 15 | //3. 파일을 쓰기 (동기방식) 16 | File memoFile = File('diary.txt'); 17 | String contents = """ 18 | 2019.06.16: 플러터 공부 시작 19 | 20 | 오늘은 플러터의 표준 라이브러리를 공부했다. 21 | 안드로이드 스튜디오를 활용하여 예제를 실행하였다. 22 | """; 23 | memoFile.writeAsStringSync(contents); 24 | } -------------------------------------------------------------------------------- /std_library/lib/io_user_input.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | void main() { 4 | //1. 사용자 입력 받기 5 | stdout.write('Enter name? '); //same as print() 6 | String input = stdin.readLineSync(); 7 | print('Hello, $input'); 8 | } -------------------------------------------------------------------------------- /std_library/lib/json_example.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | import 'dart:io'; 3 | 4 | void main() { 5 | //1. JSON 문자열 파싱하기 6 | String jsonStr = """ 7 | {"basket" : { 8 | "apple" : 50, 9 | "banana" : 10, 10 | "grape" : 5 11 | } 12 | } 13 | """; 14 | Map json = jsonDecode(jsonStr); 15 | Map basket = json["basket"]; 16 | int apples = basket["apple"]; 17 | int bananas = basket["banana"]; 18 | int grapes = basket["grape"]; 19 | print("apples are $apples"); 20 | print("bananas are $bananas"); 21 | print("grapes are $grapes"); 22 | 23 | //2. JSON 파일 읽기 24 | Map basketMap = _readBasketJson('basket.json'); 25 | print('grapes was ${basketMap["grape"]}'); 26 | 27 | //3. JSON 파일 쓰기 28 | basketMap.update('grape', (v) => 99); 29 | File('basket.json').writeAsStringSync(jsonEncode(basketMap)); 30 | 31 | Map updated = _readBasketJson('basket.json'); 32 | int grapesNow = updated["grape"]; 33 | print('now grapes are $grapesNow'); 34 | } 35 | 36 | Map _readBasketJson(String fileName) { 37 | String contents = File(fileName).readAsStringSync(); 38 | print('contents : $contents'); 39 | return jsonDecode(contents); 40 | } -------------------------------------------------------------------------------- /std_library/lib/math_examples.dart: -------------------------------------------------------------------------------- 1 | import 'dart:math'; 2 | 3 | void main() { 4 | List numbers = [100, 200, 300, 400, 250]; 5 | 6 | //1. 최대, 최소값 7 | int maxValue = max(numbers[0], numbers[1]); 8 | int minValue = min(numbers[2], numbers[3]); 9 | print('max(100, 200) is $maxValue'); 10 | print('min(300, 400) is $minValue'); 11 | 12 | //2. 제곱근 13 | double sqaureRooted = sqrt(numbers[4]); 14 | print('sqrt(250) is $sqaureRooted'); 15 | 16 | //3. 난수 발생 17 | List randomNumbers = _makeRandomNumbers(10, 8); 18 | print('random number(0..9) is $randomNumbers'); 19 | 20 | //4. 반올림은 math 패키지가 아님 21 | double doubleValue = 500.51; 22 | int rounded = doubleValue.round(); 23 | print('500.51 rounds $rounded'); 24 | } 25 | 26 | List _makeRandomNumbers(int max, int counts) { 27 | Random rand = Random(); 28 | List res = List(); 29 | for (int i=0; i< counts; ++i) { 30 | res.add(rand.nextInt(max)); //0과 max-1 사이 31 | } 32 | 33 | return res; 34 | } -------------------------------------------------------------------------------- /std_library/poem.txt: -------------------------------------------------------------------------------- 1 | The Road Not Taken 2 | BY ROBERT FROST 3 | 4 | Two roads diverged in a yellow wood, 5 | And sorry I could not travel both 6 | And be one traveler, long I stood 7 | And looked down one as far as I could 8 | To where it bent in the undergrowth; 9 | 10 | Then took the other, as just as fair, 11 | And having perhaps the better claim, 12 | Because it was grassy and wanted wear; 13 | Though as for that the passing there 14 | Had worn them really about the same, 15 | 16 | And both that morning equally lay 17 | In leaves no step had trodden black. 18 | Oh, I kept the first for another day! 19 | Yet knowing how way leads on to way, 20 | I doubted if I should ever come back. 21 | 22 | I shall be telling this with a sigh 23 | Somewhere ages and ages hence: 24 | Two roads diverged in a wood, and I— 25 | I took the one less traveled by, 26 | And that has made all the difference. -------------------------------------------------------------------------------- /std_library/sample.txt: -------------------------------------------------------------------------------- 1 | Flutter is Google’s portable UI toolkit for building beautiful, natively-compiled applications for mobile, web, and desktop from a single codebase. 2 | Fast Development 3 | - Paint your app to life in milliseconds with stateful Hot Reload. Use a rich set of fully-customizable widgets to build native interfaces in minutes. 4 | Expressive and Flexible UI 5 | - Quickly ship features with a focus on native end-user experiences. Layered architecture allows for full customization, which results in incredibly fast rendering and expressive and flexible designs. 6 | Native Performance 7 | - Flutter’s widgets incorporate all critical platform differences such as scrolling, navigation, icons and fonts to provide full native performance on both iOS and Android. --------------------------------------------------------------------------------