Skip to content

Latest commit

 

History

History

Flutter

certificate

This certificate above verifies that ANDREW YU MING XIN successfully completed the course Flutter & Dart - The Complete Guide [2023 Edition] on 09/04/2023 as taught by Academind by Maximilian Schwarzmüller, Maximilian Schwarzmüller on Udemy. The certificate indicates the entire course was completed as validated by the student. The course duration represents the total video hours of the course at time of most recent completion.

- Flutter is UI Framework for cross-platform (Android, IOS, Web, Windows, macOS, Linux) powered by Dart language, natively compiled. However, need macOS for IOS + macOS, for Appstore. Windows for Android + Web
- Flutter creates UI by nesting widgets (widget tree), inside runApp(), inside main(), which gets executed automatically by Dart
- varName, functionName, ClassName, file_name.dart conventions

- const is immutable compile-time constant
- final is mutable run-time constant
- var

- Primitive Object, Bool, String, num, int, double
- Complex Widgets

- WidgetType widget1(positionalParameter, [b], [c = 5]) {...}
- WidgetType widget1({ namedParameter1, namedParameter2 = 5 }) {...}
- WidgetType widget1(a, {required b}) {...}

- Classes, setState, "${}"

+Widgets used:

Classes used:

- Opacity is performance-intensive! use alpha in Color.fromARGB(150, 255, 255, 255) instead
- Alternative constructors Eg. OutlinedButton vs OutlinedButton.icon for icon
- Container(padding:..., margin:...) = Padding(padding:...) widget, 
- Installing 3rd party packages (GoogleFonts)
- Getters: "getting a value", used as a property, internally is a method
- .shuffle() to randomly shuffle mutate in-place, List.of(...) to create copy of list, .add(), .map(), .where(), Map<keyType, valueType>, Map typecasting as Dart doesn't know type of value in Map Eg. data["qn_index"] as int

+Widgets used:

Classes used:

- DateTime, Category, 
- IOS vs Android Dialog Responsiveness
- Portrait vs Landscape Orientation Responsiveness
- Futures (Promises), Async Await Eg. Adding item
- Theming (.copyWith(...), .of(context) from ThemeData)
- 3rd party (uuid (unique ids), intl (date formatter))

+Widgets used:

Classes used:

- late
- Cross-widget/App-wide state
- Explicit, Implicit Animations
- 3rd party (riverpod (Manage cross-widget state instead of passing states thru widgets that don't use it))

+Widgets used:

Classes used:

- Form
- Backend & HTTP requests
- json.decode/encode
- !context.mounted (Check if referred context is outdated)
- 3rd party (http.get/post/put/patch/delete(...))

+Widgets used:

Classes used:

- Native Device Features (Camera, Device Storage, GPS location)
- Google Maps API
- Pathing + SQLite Database

+Widgets used:

Classes used:

- Firebase Auth, Firestore, Cloud Storage, Messaging

+Widgets used:

Classes used:

- Get/Add/Update/Delete data: .then, Retrieve + use to build widget: FutureBuilder/StreamBuilder

+Widgets used:

Classes used:

Async Await Firebase: