Coder Social home page Coder Social logo

itachi-p / flutter-udemy-demoapps Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 868 KB

Udemy Flutter教材02 講師:Maximilian Schwarzmüller 複数のデモアプリ作成 GoogleMap連携 カメラ等ネイティブデバイス機能の使用

Home Page: https://www.udemy.com/course/learn-flutter-dart-to-build-ios-android-apps/

Kotlin 0.21% Swift 2.53% Objective-C 0.05% Dart 31.45% CMake 26.80% C++ 32.94% C 2.04% HTML 2.64% Ruby 1.34%
flutter-apps dart-lang flutter3

flutter-udemy-demoapps's Introduction

Udemy Course: Flutter & Dart - The Complete Guide [2023 Edition]

A Complete Guide to the Flutter SDK & Flutter Framework for building native iOS and Android apps
Flutter & Dart - The Complete Guide [2023 Edition]

学習方針(考え方)

  • チュートリアルや写経でも『The Art of Readable Code』の考えを反映する

    • 講師による変数の命名にも改善余地を見出す
    • 逆に疑問を感じた書き方に対し、なぜ講師がそうしているのかを考える
    • 「良いコード」とは誰が見てもわかりやすいコード
    • 変数名や関数名、コメントの書き方、インデントや改行の入れ方を工夫する
    • コメントに関して現状は「自身の理解度、知識定着度」優先だが、開発現場想定では「他人(或いは半年後の自分)にとっての理解しやすさ」を優先する
  • とにかく丁寧に学習モード

    • 学習速度や成果物作成進度は更に落ちるが、英語の学習(hearing, reading)を兼ね英語音声+英語字幕で視聴する
      • 英語の音声と字幕の聴覚・視覚情報を入れながら同時に脳内で日本語翻訳しない
      • 英語の語順通り前から順に理解していく。未知の単語だけ調べる
      • 単語を調べても意味が通らない場合のみ、慣用句(だいたい2~5ワード)或いは最大1文節を翻訳する
  • ひたすらスピード!速さは正義!モード

    • (GitHub Copilotの提案を最大限活用し)爆速でコードを書く
    • おそらく実務で要求されるのはこっちがメイン
    • 限られた時間内で一定以上の成果を上げる為にはマスト
  • 上記2つのモードをええ塩梅で切り替える器用さと判断力

    • 日々の訓練あるのみ
    • 完璧じゃなくても先週・先月・四半期前・去年よりはできるようになる
    • "Don't think. feel! It's like a finger pointing away to the moon. Don't concentrate on the finger, or you will miss all the heavenly glory." by 青3

main contains:

Section 1: Introduction

  • environment building on Macbook Pro(Flutter1 -> Flutter3)
  • Emulator setup (Android - Android Studio)
  • Emulator setup (iOS - Xcode - CocoaPods)
  • create a new project (first_app)
  • run the app on emulator (Mainly Android 13)
  • run the app on emulator (iOS 17.0)

Section 2: Flutter(Dart) Basics 1 - [RoleDiceApp]

  • Dart Basics
  • Flutter Basics
  • Stateless Widgets
  • Stateful Widgets

Section 3: Flutter(Dart) Basics 2 - [QuizApp]

  • Use initState()
  • Separation of Data Model & UI
  • Using Third-Party Packages
  • Custom Fonts & Adding Icons
  • Passing Callback Functions Around
  • Mapping Lists to Widgets
  • List>Map< type is shared among widgets
  • Accessing Map values & Using type casting
  • Using the Spread Operator
  • Combination of columns and rows, wrapped in Expanded
  • Filtering & Analyzing Lists
  • Making content scrollable

Section 4: Debugging Flutter Apps (Using Debug Tools)

  • Debugging apps & Using debug mode
  • Working with the Flutter DevTools
    • Open DevTools in Web Browser
      • Using the Flutter Widget Inspector
      • Logging
      • Network
      • Performance (Need to run in profile mode)
      • Debugger
      • Other Analysis Tools(Pages)
  • Running the app on a physical devices
    • 以前(Flutter Ver.1で)Android, iPhone実機どっちもやった
    • On actual Android device
    • On actual iOS device
      • 手持ちのiPhone Xrにて実機テスト
        • プロジェクトごとにホームディレクトリにてflutter build iosを実行
        • XCode15.0.1からの実機テスト成功
        • VSCodeからの実機テスト成功(こちらを優先使用)

Section 5: Adding Interactivity & Theming [ExpenseTrackerApp1]

  • Using third package:UUID (generate unique id)
  • Views
    • List
    • & Chart
  • Implementation of Modal Overlays
  • スワイプ(削除)機能の実装
  • スナックバーの実装(スワイプ削除時のアンドゥ機能)
  • Using Flutter Themes

Section 6: Building Responsive & Adaptive User Interfaces[ExpenseTrackerApp2)]

  • !NOT Responsi"ble"
  • Flutter3はMacOS, Windows, Linux, Webブラウザも全対応だが、基本モバイルアプリ版で想定
  • デバイスの向きに合わせない(特定方向に固定する)方法
  • ユーザーの使用環境に応じてUIを最適化する
    • デバイスの向き(縦 portrait mode・横 landscape mode)を検出
    • ランドスケープモードではチャートを左、リストを右に表示する
    • デバイスのサイズ(スマホ・タブレット・PC)
      • ポートレートモードでも十分な幅があればチャートは左に表示
  • Building Adaptive Widgets
    • デバイスのOS(Android・iOS・Web)

Section 7: Flutter & Dart Internal[TodoApp]

Flutterの内部構造を理解する(TodoAppはむしろ題材)

  • 開発者が直接意識するのはWidget Treeのみ
  • 記述したコード→メモリ最適化→差分の比較→最終的にUI描画
  • 三つのツリー構造
    • Widget Tree
    • Element Tree
    • Render Tree
  • main(runApp), build, setStateの流れを舞台裏も含め理解する
  • Understanding the "key" property
  • Mutating Values in Memory
  • Make sense of var, final & const

Sec8~10: [MealsApp]

Sec8: Navigation & Multiple Screens

  • Using GridView
  • Page navigation with tabs, side drawers, and stack-based navigation

Sec9: Managing App-wide State

Sec10: Adding animations

  • Adding beautiful animations & page transitions

Sec11: [ShoppingListApp1]

  • Handling and validating user input

Sec12: [ShoppingListApp2]

  • Connecting to backend servers by sending HTTP requests

Sec13: Using Native Device Features(e.g.,Camera) [FavoritePlacesApp]

  • Using native device features like the camera
  • Adding Google Maps
  • Image upload

Sec14: [ChatApp]

  • Firebase & Firestore
  • User authentication
  • Push notifications - manual approach and automated

What I'll learn later

  • State management solutions
  • Not using StatefulWidget
  • Creating original apps!
  • Design
  • Management
  • And much more

flutter-udemy-demoapps's People

Contributors

itachi-p avatar

Watchers

 avatar

flutter-udemy-demoapps's Issues

new_expense.dart内の重複部分の外部ウィジェット切り出し部品化と再利用

講座ではLayoutBuilderの紹介を優先し、デバイスの画面幅による条件分岐の中身を大量のコピー&ペーストで済ませたが、非常に醜い。
本来であれば新規明細画面のモーダル内の全ての要素(テキスト入力欄やプルダウン、カレンダーなど)をそれぞれ独立したウィジェットとして切り出した上で呼び出すべき。全てコピペで済ませた為、無駄にコードが膨れ上がり倍以上の行数になってしまっている。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.