├── .vscode └── settings.json ├── 03_dart_fundamental ├── 01_comment │ ├── dartpad_metadata.yaml │ └── main.dart ├── 02_variables │ ├── 01 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ └── 02 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart ├── 03_data_types │ ├── 01 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ └── 02 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart ├── 04_numbers │ ├── dartpad_metadata.yaml │ └── main.dart ├── 05_strings │ ├── 01 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 02 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 03 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 04 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 05 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ └── 06 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart ├── 06_booleans │ ├── dartpad_metadata.yaml │ └── main.dart ├── 07_operators │ ├── 01 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 02 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 03 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ └── 04 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart ├── 08_exceptions │ ├── 01 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 02 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 03 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ └── 04 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart ├── 09_functions │ ├── 01 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 02 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ └── 03 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart ├── 10_variable_scope │ ├── 01 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 02 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 03 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ └── 04 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart ├── 11_constants_and_final │ ├── 01 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ └── 02 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart └── 12_null_safety │ ├── 01 │ ├── dartpad_metadata.yaml │ └── main.dart │ └── 02 │ ├── dartpad_metadata.yaml │ └── main.dart ├── 04_control_flow ├── 01_if_else │ ├── 01 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 02 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 03 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ └── 04 │ │ ├── dartpad_metadata.yaml │ │ ├── hint.txt │ │ ├── main.dart │ │ ├── solution.dart │ │ └── test.dart ├── 02_for_loops │ ├── 01 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ └── 02 │ │ ├── dartpad_metadata.yaml │ │ ├── hint.txt │ │ ├── main.dart │ │ └── solution.dart ├── 03_while_and_do_while │ ├── 01 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 02 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 03 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ └── 04 │ │ ├── dartpad_metadata.yaml │ │ ├── hint.txt │ │ ├── main.dart │ │ └── solution.dart ├── 04_break_and_continue │ ├── 01 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ └── 02 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart └── 05_switch_and_case │ ├── dartpad_metadata.yaml │ └── main.dart ├── 05_collections ├── 01_list │ ├── 10 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 01 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 02 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 03 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 04 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 05 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 06 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 07 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 08 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ └── 09 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart ├── 02_set │ ├── 01 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 02 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 03 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 04 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ └── 05 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart └── 03_map │ ├── 01 │ ├── dartpad_metadata.yaml │ └── main.dart │ ├── 02 │ ├── dartpad_metadata.yaml │ └── main.dart │ └── 03 │ ├── dartpad_metadata.yaml │ └── main.dart ├── 06_object_oriented_programming ├── 01_class │ ├── dartpad_metadata.yaml │ └── main.dart ├── 02_properties_and_methods │ ├── dartpad_metadata.yaml │ └── main.dart ├── 03_constructor │ ├── 01 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 02 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 03 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ └── 04 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart ├── 04_cascade_notation │ ├── dartpad_metadata.yaml │ └── main.dart ├── 05_inheritance │ ├── dartpad_metadata.yaml │ └── main.dart ├── 06_implicit_interface │ ├── dartpad_metadata.yaml │ └── main.dart ├── 07_enumerated_types │ ├── 01 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ ├── 02 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart │ └── 03 │ │ ├── dartpad_metadata.yaml │ │ └── main.dart ├── 08_mixins │ ├── dartpad_metadata.yaml │ └── main.dart └── 09_extension_methods │ ├── dartpad_metadata.yaml │ └── main.dart ├── 07_functional_styles ├── 01_anonymous_functions │ ├── dartpad_metadata.yaml │ └── main.dart ├── 02_higher_order_functions │ ├── dartpad_metadata.yaml │ └── main.dart └── 03_closures │ ├── dartpad_metadata.yaml │ └── main.dart ├── 08_dart_type_system ├── 01_generic │ ├── dartpad_metadata.yaml │ └── main.dart └── 02_type_inference │ ├── dartpad_metadata.yaml │ └── main.dart └── 09_dart_futures ├── 01_what_is_future ├── 01 │ ├── dartpad_metadata.yaml │ └── main.dart ├── 02 │ ├── dartpad_metadata.yaml │ └── main.dart ├── 03 │ ├── dartpad_metadata.yaml │ └── main.dart ├── 04 │ ├── dartpad_metadata.yaml │ └── main.dart └── 05 │ ├── dartpad_metadata.yaml │ └── main.dart └── 02_future_with_async_await ├── 01 ├── dartpad_metadata.yaml └── main.dart └── 02 ├── dartpad_metadata.yaml └── main.dart /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "dart.analysisExcludedFolders": [ 3 | "03_dart_fundamental", 4 | "04_control_flow", 5 | ], 6 | } -------------------------------------------------------------------------------- /03_dart_fundamental/01_comment/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 Comments" 2 | mode: dart 3 | files: 4 | - name: main.dart -------------------------------------------------------------------------------- /03_dart_fundamental/01_comment/main.dart: -------------------------------------------------------------------------------- 1 | /// Fungsi [main] akan menampilkan 2 output 2 | /// Output pertama menampilkan teks dan output kedua menampilkan hasil perkalian pada fungsi [calculate] 3 | void main(List arguments) { 4 | // Mencetak Hello Dart! Dart is great. pada konsol 5 | print('Hello Dart! Dart is great.'); 6 | // Testing documentation comment with []. 7 | print('6 * 7 = ${calculate()}'); 8 | } 9 | 10 | int calculate() { 11 | return 6 * 7; 12 | } 13 | 14 | /// Output: 15 | /// Hello Dart! Dart is great. 16 | /// 6 * 7 = 42 17 | -------------------------------------------------------------------------------- /03_dart_fundamental/02_variables/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "02 Variables 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/02_variables/01/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var greetings = 'Hello Dart!'; 3 | print(greetings); 4 | } 5 | -------------------------------------------------------------------------------- /03_dart_fundamental/02_variables/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "02 Variables 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/02_variables/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var myAge; 3 | myAge = 20; 4 | print(myAge); 5 | } 6 | -------------------------------------------------------------------------------- /03_dart_fundamental/03_data_types/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "03 Data Types 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/03_data_types/01/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var x; // dynamic 3 | x = 7; 4 | x = 'Dart is great'; 5 | print(x); 6 | } 7 | -------------------------------------------------------------------------------- /03_dart_fundamental/03_data_types/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "03 Data Types 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/03_data_types/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var x = 7; // int 3 | x = 'Dart is great'; // Kesalahan assignment 4 | print(x); 5 | } 6 | -------------------------------------------------------------------------------- /03_dart_fundamental/04_numbers/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "04 Numbers" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/04_numbers/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | // String -> int 3 | var eleven = int.parse('11'); 4 | print(eleven.runtimeType); 5 | 6 | // String -> double 7 | var elevenPointTwo = double.parse('11.2'); 8 | print(elevenPointTwo.runtimeType); 9 | 10 | // int -> String 11 | var elevenAsString = 11.toString(); 12 | print(elevenAsString.runtimeType); 13 | 14 | // double -> String 15 | var piAsString = 3.14159.toStringAsFixed(2); // String piAsString = '3.14' 16 | print(piAsString.runtimeType); 17 | } 18 | -------------------------------------------------------------------------------- /03_dart_fundamental/05_strings/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "05 Strings 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/05_strings/01/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | print('"What do you think of Dart?" he asked'); 3 | } 4 | -------------------------------------------------------------------------------- /03_dart_fundamental/05_strings/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "05 Strings 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/05_strings/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | print('"I think it\'s great!" I answered confidently'); 3 | } 4 | -------------------------------------------------------------------------------- /03_dart_fundamental/05_strings/03/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "05 Strings 03" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/05_strings/03/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | print("Windows path: C:\\Program Files\\Dart"); 3 | } 4 | -------------------------------------------------------------------------------- /03_dart_fundamental/05_strings/04/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "05 Strings 04" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/05_strings/04/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var name = 'Messi'; 3 | print('Hello $name, nice to meet you.'); 4 | print('1 + 1 = ${1 + 1}'); 5 | } 6 | -------------------------------------------------------------------------------- /03_dart_fundamental/05_strings/05/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "05 Strings 05" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/05_strings/05/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | print(r'Dia baru saja membeli komputer seharga $1,000.00'); 3 | } 4 | -------------------------------------------------------------------------------- /03_dart_fundamental/05_strings/06/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "05 Strings 06" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/05_strings/06/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | print('Hi \u2665'); 3 | } 4 | 5 | /// Output: 6 | /// Hi ♥ 7 | -------------------------------------------------------------------------------- /03_dart_fundamental/06_booleans/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "06 Booleans" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/06_booleans/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | if (true) { 3 | print("It's true"); 4 | } else { 5 | print("It's False"); 6 | } 7 | } 8 | 9 | /// Output: 10 | /// It's true 11 | -------------------------------------------------------------------------------- /03_dart_fundamental/07_operators/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "07 Operators 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/07_operators/01/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var firstNumber = 4; 3 | var secondNumber = 13; 4 | var sum = firstNumber + secondNumber; 5 | print(sum); 6 | } 7 | -------------------------------------------------------------------------------- /03_dart_fundamental/07_operators/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "07 Operators 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/07_operators/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | print(5 + 2); // int add = 7 3 | print(5 - 2); // int subtract = 3 4 | print(5 * 2); // int multiply = 10 5 | print(5 / 2); // double divide = 2.5 6 | print(5 ~/ 2); // int intDivide = 2 7 | print(5 % 2); // int modulo = 1 8 | } 9 | -------------------------------------------------------------------------------- /03_dart_fundamental/07_operators/03/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "07 Operators 03" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/07_operators/03/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | if (2 <= 3) { 3 | print('Ya, 2 kurang dari sama dengan 3'); 4 | } else { 5 | print("Anda salah"); 6 | } 7 | } 8 | 9 | /// Output: 10 | /// Ya, 2 kurang dari sama dengan 3 11 | -------------------------------------------------------------------------------- /03_dart_fundamental/07_operators/04/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "07 Operators 04" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/07_operators/04/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | if (2 < 3 && 2 + 4 == 5) { 3 | print('Untuk mencetak ini semua kondisi harus benar'); 4 | } else { 5 | print( 6 | '2 kurang dari 3, tapi 2 + 4 tidak sama dengan 5, maka ini akan tampil'); 7 | } 8 | 9 | if (false || true || false) { 10 | print('Ada satu nilai true'); 11 | } else { 12 | print('Jika semuanya false, maka ini akan tampil'); 13 | } 14 | } 15 | 16 | /// Output: 17 | /// 2 kurang dari 3, tapi 2 + 4 tidak sama dengan 5, maka ini akan tampil 18 | /// Ada satu nilai true 19 | -------------------------------------------------------------------------------- /03_dart_fundamental/08_exceptions/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "08 Exceptions 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/08_exceptions/01/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var a = 7; 3 | var b = 0; 4 | print(a ~/ b); 5 | } 6 | -------------------------------------------------------------------------------- /03_dart_fundamental/08_exceptions/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "08 Exceptions 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/08_exceptions/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | try { 3 | var a = 7; 4 | var b = 0; 5 | print(a ~/ b); 6 | } catch (e) { 7 | print('Exception happened: $e'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /03_dart_fundamental/08_exceptions/03/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "08 Exceptions 03" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/08_exceptions/03/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | try { 3 | var a = 7; 4 | var b = 0; 5 | print(a ~/ b); 6 | } catch (e, s) { 7 | print('Exception happened: $e'); 8 | print('Stack trace: $s'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /03_dart_fundamental/08_exceptions/04/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "08 Exceptions 04" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/08_exceptions/04/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | try { 3 | var a = 7; 4 | var b = 0; 5 | print(a ~/ b); 6 | } catch (e, s) { 7 | print('Exception happened: $e'); 8 | print('Stack trace: $s'); 9 | } finally { 10 | print('This line still executed'); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /03_dart_fundamental/09_functions/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "09 Functions 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/09_functions/01/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | greet(); 3 | } 4 | 5 | void greet() { 6 | print('Hello!'); 7 | } 8 | 9 | /// Output: 10 | /// Hello! 11 | -------------------------------------------------------------------------------- /03_dart_fundamental/09_functions/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "09 Functions 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/09_functions/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | greet('Dicoding', 2015); 3 | } 4 | 5 | void greet(String name, int bornYear) { 6 | var age = 2023 - bornYear; 7 | print('Halo $name! Tahun ini Anda berusia $age tahun'); 8 | } 9 | 10 | /// Output: 11 | /// Halo Dicoding! Tahun ini Anda berusia 8 tahun 12 | -------------------------------------------------------------------------------- /03_dart_fundamental/09_functions/03/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "09 Functions 03" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/09_functions/03/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var firstNumber = 7; 3 | var secondNumber = 10; 4 | print( 5 | 'Rata-rata dari $firstNumber & $secondNumber adalah ${average(firstNumber, secondNumber)}'); 6 | } 7 | 8 | double average(num num1, num num2) { 9 | return (num1 + num2) / 2; 10 | } 11 | 12 | /// Output: 13 | /// Rata-rata dari 7 & 10 adalah 8.5 14 | -------------------------------------------------------------------------------- /03_dart_fundamental/10_variable_scope/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "10 Variable Scope 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/10_variable_scope/01/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var isAvailableForDiscount = true; 3 | var price = 300000; 4 | num discount = 0; 5 | if (isAvailableForDiscount) { 6 | discount = 10 / 100 * price; 7 | } 8 | print('You need to pay: ${price - discount}'); 9 | } 10 | -------------------------------------------------------------------------------- /03_dart_fundamental/10_variable_scope/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "10 Variable Scope 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/10_variable_scope/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var price = 300000; 3 | var discount = checkDiscount(price); 4 | print('You need to pay: ${price - discount}'); 5 | } 6 | 7 | num checkDiscount(num price) { 8 | num discount = 0; 9 | if (price >= 100000) { 10 | discount = 10 / 100 * price; 11 | } 12 | 13 | return discount; 14 | } 15 | -------------------------------------------------------------------------------- /03_dart_fundamental/10_variable_scope/03/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "10 Variable Scope 03" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/10_variable_scope/03/main.dart: -------------------------------------------------------------------------------- 1 | var price = 300000; 2 | 3 | void main() { 4 | var discount = checkDiscount(price); 5 | print('You need to pay: ${price - discount}'); 6 | } 7 | 8 | num checkDiscount(num price) { 9 | num discount = 0; 10 | if (price >= 100000) { 11 | discount = 10 / 100 * price; 12 | } 13 | 14 | return discount; 15 | } 16 | -------------------------------------------------------------------------------- /03_dart_fundamental/10_variable_scope/04/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "10 Variable Scope 04" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/10_variable_scope/04/main.dart: -------------------------------------------------------------------------------- 1 | var price = 300000; 2 | 3 | void main() { 4 | var discount = checkDiscount(price); 5 | print('You need to pay: ${price - discount}'); 6 | } 7 | 8 | num checkDiscount(num price) { 9 | num discount = 0; 10 | if (!discountApplied) { 11 | // Error 12 | if (price >= 100000) { 13 | discount = 10 / 100 * price; 14 | var discountApplied = true; 15 | } 16 | } 17 | 18 | return discount; 19 | } 20 | -------------------------------------------------------------------------------- /03_dart_fundamental/11_constants_and_final/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "11 Constants And Final 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/11_constants_and_final/01/main.dart: -------------------------------------------------------------------------------- 1 | const num pi = 3.14; 2 | 3 | void main() { 4 | var radius = 7; 5 | print( 6 | 'Luas lingkaran dengan radius $radius = ${calculateCircleArea(radius)}'); 7 | } 8 | 9 | num calculateCircleArea(num radius) => pi * radius * radius; 10 | -------------------------------------------------------------------------------- /03_dart_fundamental/11_constants_and_final/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "11 Constants And Final 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/11_constants_and_final/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | final firstName = "Achmad"; 3 | final lastName = "Ilham"; 4 | 5 | lastName = 'Angga'; //Tidak bisa mengubah nilai 6 | 7 | print('Hello $firstName $lastName'); 8 | } 9 | -------------------------------------------------------------------------------- /03_dart_fundamental/12_null_safety/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "12 Null Safety 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/12_null_safety/01/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | String? favoriteFood = null; 3 | 4 | buyAMeal(favoriteFood); // Compile error 5 | } 6 | 7 | void buyAMeal(String favoriteFood) { 8 | print('I bought a $favoriteFood'); 9 | } 10 | -------------------------------------------------------------------------------- /03_dart_fundamental/12_null_safety/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "12 Null Safety 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /03_dart_fundamental/12_null_safety/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | String? favoriteFood = 'Mie Ayam'; 3 | 4 | buyAMeal(favoriteFood!); 5 | } 6 | 7 | void buyAMeal(String favoriteFood) { 8 | print('I bought a $favoriteFood'); 9 | } 10 | -------------------------------------------------------------------------------- /04_control_flow/01_if_else/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 If Else 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /04_control_flow/01_if_else/01/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var isRaining = true; 3 | 4 | print('Prepare before going to office.'); 5 | if (isRaining) { 6 | print("Oh. It's raining, bring an umbrella."); 7 | } 8 | print('Going to the office.'); 9 | } 10 | -------------------------------------------------------------------------------- /04_control_flow/01_if_else/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 If Else 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /04_control_flow/01_if_else/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var openHours = 8; 3 | var closedHours = 21; 4 | var now = 17; 5 | 6 | if (now > openHours && now < closedHours) { 7 | print("Hello, we're open"); 8 | } else { 9 | print("Sorry, we've closed"); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /04_control_flow/01_if_else/03/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 If Else 03" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /04_control_flow/01_if_else/03/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var score = 85; 3 | 4 | print('Nilai Anda: ${calculateScore(score)}'); 5 | } 6 | 7 | String calculateScore(num score) { 8 | if (score > 90) { 9 | return 'A'; 10 | } else if (score > 80) { 11 | return 'B'; 12 | } else if (score > 70) { 13 | return 'C'; 14 | } else if (score > 60) { 15 | return 'D'; 16 | } else { 17 | return 'E'; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /04_control_flow/01_if_else/04/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 If Else 03" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | - name: test.dart 6 | - name: solution.dart 7 | - name: hint.txt -------------------------------------------------------------------------------- /04_control_flow/01_if_else/04/hint.txt: -------------------------------------------------------------------------------- 1 | Perhatikan kembali pernyatan "Kalau ada telur, ambil 6." -------------------------------------------------------------------------------- /04_control_flow/01_if_else/04/main.dart: -------------------------------------------------------------------------------- 1 | int mainCode() { 2 | // declaration variable 3 | int oilThatShouldBuy; 4 | 5 | // ---[ Tulis kodemu setelah baris ini ]--- 6 | 7 | // ---[ Jangan menulis atau mengubah kode di bawah ini ]--- 8 | return oilThatShouldBuy; 9 | } 10 | -------------------------------------------------------------------------------- /04_control_flow/01_if_else/04/solution.dart: -------------------------------------------------------------------------------- 1 | int mainCode() { 2 | int oilThatShouldBuy; 3 | 4 | // ---[ Tulis kodemu setelah baris ini ]--- 5 | oilThatShouldBuy = 1; 6 | 7 | bool isThereAnyEgg = true; 8 | 9 | if (isThereAnyEgg) { 10 | oilThatShouldBuy = 6; 11 | } 12 | 13 | // ---[ Jangan menulis atau mengubah kode di bawah ini ]--- 14 | return oilThatShouldBuy; 15 | } 16 | -------------------------------------------------------------------------------- /04_control_flow/01_if_else/04/test.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | try { 3 | final oilThatShouldBuy = mainCode(); 4 | 5 | if (oilThatShouldBuy == 6) { 6 | _result(true); 7 | } else { 8 | _result(false, [ 9 | 'Kamu belum mengembalikan nilai yang tepat.', 10 | ]); 11 | } 12 | } catch (e) { 13 | _result(false, [ 14 | 'Mencoba menjalankan fungsi mainCode(), tetapi mengalami error: ${e.runtimeType}"', 15 | ]); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /04_control_flow/02_for_loops/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "02 For Loops 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /04_control_flow/02_for_loops/01/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | for (int i = 1; i <= 100; i++) { 3 | print(i); 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /04_control_flow/02_for_loops/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "02 For Loops 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | - name: solution.dart 6 | - name: hint.txt 7 | # - name: test.dart -------------------------------------------------------------------------------- /04_control_flow/02_for_loops/02/hint.txt: -------------------------------------------------------------------------------- 1 | Gunakan dua for loops untuk baris dan kolom. -------------------------------------------------------------------------------- /04_control_flow/02_for_loops/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | // tulis kodemu di sini. 3 | } 4 | -------------------------------------------------------------------------------- /04_control_flow/02_for_loops/02/solution.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | // index [i] akan berulang untuk menampilkan teks tiap baris 3 | for (int i = 0; i < 10; i++) { 4 | // index [j] akan berulang untuk menampilkan teks tiap kolom 5 | String text = ""; 6 | for (int j = 0; j <= i; j++) { 7 | text = text + "*"; 8 | } 9 | print(text); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /04_control_flow/03_while_and_do_while/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "03 While And Do While 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /04_control_flow/03_while_and_do_while/01/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var i = 1; 3 | 4 | while (i <= 100) { 5 | print(i); 6 | i++; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /04_control_flow/03_while_and_do_while/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "03 While And Do While 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /04_control_flow/03_while_and_do_while/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var i = 1; 3 | 4 | do { 5 | print(i); 6 | i++; 7 | } while (i <= 100); 8 | } 9 | -------------------------------------------------------------------------------- /04_control_flow/03_while_and_do_while/03/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "03 While And Do While 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /04_control_flow/03_while_and_do_while/03/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var i = 1; 3 | 4 | while (i < 5) { 5 | print(i); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /04_control_flow/03_while_and_do_while/04/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "03 While And Do While 04" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | - name: solution.dart 6 | - name: hint.txt 7 | # - name: test.dart -------------------------------------------------------------------------------- /04_control_flow/03_while_and_do_while/04/hint.txt: -------------------------------------------------------------------------------- 1 | // Gunakan dua while atau do-while loops untuk baris dan kolom. -------------------------------------------------------------------------------- /04_control_flow/03_while_and_do_while/04/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | // tulis kodemu di sini. 3 | } 4 | -------------------------------------------------------------------------------- /04_control_flow/03_while_and_do_while/04/solution.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | // variabel [i] akan berulang untuk menampilkan teks tiap baris 3 | int i = 10; 4 | while (i > 0) { 5 | // variabel [j] akan berulang untuk menampilkan teks tiap kolom 6 | int j = i; 7 | String text = ""; 8 | while (j > 0) { 9 | text = text + "*"; 10 | j--; 11 | } 12 | print(text); 13 | i--; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /04_control_flow/04_break_and_continue/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "04 Break And Continue 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /04_control_flow/04_break_and_continue/01/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | // bilangan prima di bawah 100 3 | var primeNumbers = [ 4 | 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 73, 79, 83, 89, 97 5 | ]; 6 | 7 | var searchNumber = 13; 8 | print('Masukkan bilangan prima di antara 1-100: $searchNumber'); 9 | 10 | for (int i = 0; i < primeNumbers.length; i++) { 11 | if (searchNumber == primeNumbers[i]) { 12 | print('$searchNumber adalah bilangan prima ke-${i + 1}'); 13 | break; 14 | } 15 | print('$searchNumber != ${primeNumbers[i]}'); 16 | } 17 | } 18 | 19 | /// Output: 20 | /// Masukkan bilangan prima : 13 21 | /// 13 != 2 22 | /// 13 != 3 23 | /// 13 != 5 24 | /// 13 != 7 25 | /// 13 != 11 26 | /// 13 adalah bilangan prima ke-6 27 | -------------------------------------------------------------------------------- /04_control_flow/04_break_and_continue/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "04 Break And Continue 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /04_control_flow/04_break_and_continue/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | for (int i = 1; i <= 10; i++) { 3 | if (i % 3 == 0) { 4 | continue; 5 | } 6 | print(i); 7 | } 8 | } 9 | 10 | /// Output: 11 | /// 1 12 | /// 2 13 | /// 4 14 | /// 5 15 | /// 7 16 | /// 8 17 | /// 10 18 | -------------------------------------------------------------------------------- /04_control_flow/05_switch_and_case/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "05 Switch And Case" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /04_control_flow/05_switch_and_case/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | final firstNumber = 13; 3 | final secondNumber = 18; 4 | final operator = "+"; 5 | 6 | switch (operator) { 7 | case '+': 8 | print( 9 | '$firstNumber $operator $secondNumber = ${firstNumber + secondNumber}'); 10 | break; 11 | case '-': 12 | print( 13 | '$firstNumber $operator $secondNumber = ${firstNumber - secondNumber}'); 14 | break; 15 | case '*': 16 | print( 17 | '$firstNumber $operator $secondNumber = ${firstNumber * secondNumber}'); 18 | break; 19 | case '/': 20 | print( 21 | '$firstNumber $operator $secondNumber = ${firstNumber / secondNumber}'); 22 | break; 23 | default: 24 | print('Operator tidak ditemukan'); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /05_collections/01_list/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 List 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /05_collections/01_list/01/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | List dynamicList = [1, 'Dicoding', true]; 3 | print(dynamicList.runtimeType); 4 | } 5 | 6 | /// Output: 7 | /// List 8 | /// atau 9 | /// JSArray 10 | -------------------------------------------------------------------------------- /05_collections/01_list/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 List 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /05_collections/01_list/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | List dynamicList = [1, 'Dicoding', true]; 3 | print(dynamicList[1]); 4 | } 5 | -------------------------------------------------------------------------------- /05_collections/01_list/03/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 List 03" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /05_collections/01_list/03/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | List stringList = ["Hello", "Dicoding", "Dart"]; 3 | 4 | for (int i = 0; i < stringList.length; i++) { 5 | print(stringList[i]); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /05_collections/01_list/04/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 List 04" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /05_collections/01_list/04/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | List stringList = ["Hello", "Dicoding", "Dart"]; 3 | 4 | stringList.forEach((s) => print(s)); 5 | } 6 | -------------------------------------------------------------------------------- /05_collections/01_list/05/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 List 05" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /05_collections/01_list/05/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | List stringList = ["Hello", "Dicoding", "Dart"]; 3 | 4 | // Menambahkan data di akhir list. 5 | stringList.add('Flutter'); 6 | 7 | print(stringList); 8 | } 9 | 10 | /// Output: 11 | /// [Hello, Dicoding, Dart, Flutter] 12 | -------------------------------------------------------------------------------- /05_collections/01_list/06/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 List 06" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /05_collections/01_list/06/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | List stringList = ["Hello", "Dicoding", "Dart", "Flutter"]; 3 | 4 | // Menambahkan data di indeks ke-0. 5 | stringList.insert(0, 'Programming'); 6 | 7 | print(stringList); 8 | } 9 | 10 | /// Output: 11 | /// [Programming, Hello, Dicoding, Dart, Flutter] 12 | -------------------------------------------------------------------------------- /05_collections/01_list/07/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 List 07" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /05_collections/01_list/07/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | List stringList = [ 3 | "Programming", 4 | "Hello", 5 | "Dicoding", 6 | "Dart", 7 | "Flutter" 8 | ]; 9 | 10 | // Menghapus list dengan nilai Programming 11 | stringList.remove('Programming'); 12 | 13 | // Menghapus list pada index ke-1 14 | // stringList.removeAt(1); 15 | 16 | // Menghapus data list terakhir 17 | // stringList.removeLast(); 18 | 19 | // Menghapus list mulai index ke-0 sampai ke-1 (indeks 2 masih dipertahankan) 20 | // stringList.removeRange(0,2); 21 | 22 | print(stringList); 23 | } 24 | -------------------------------------------------------------------------------- /05_collections/01_list/08/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 List 08" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /05_collections/01_list/08/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var favorites = ['Seafood', 'Salad', 'Nugget', 'Soup']; 3 | var others = ['Cake', 'Pie', 'Donut']; 4 | var allFavorites = [favorites, others]; 5 | print(allFavorites); 6 | } 7 | 8 | /// Output: 9 | /// [[Seafood, Salad, Nugget, Soup], [Cake, Pie, Donut]] 10 | -------------------------------------------------------------------------------- /05_collections/01_list/09/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 List 09" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /05_collections/01_list/09/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var favorites = ['Seafood', 'Salad', 'Nugget', 'Soup']; 3 | var others = ['Cake', 'Pie', 'Donut']; 4 | var allFavorites = [...favorites, ...others]; 5 | print(allFavorites); 6 | } 7 | 8 | /// Output: 9 | /// [Seafood, Salad, Nugget, Soup, Cake, Pie, Donut] 10 | -------------------------------------------------------------------------------- /05_collections/01_list/10/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 List 10" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /05_collections/01_list/10/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | List? list; 3 | List? list2 = [0, ...?list]; 4 | print(list2); 5 | } 6 | 7 | /// Output: 8 | /// [0] 9 | -------------------------------------------------------------------------------- /05_collections/02_set/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "02 Set 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /05_collections/02_set/01/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | Set anotherSet = new Set.from([1, 4, 6, 4, 1]); 3 | 4 | print(anotherSet); 5 | } 6 | 7 | /// Output: 8 | /// {1, 4, 6} 9 | -------------------------------------------------------------------------------- /05_collections/02_set/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "02 Set 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /05_collections/02_set/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var numberSet = {1, 4, 6}; 3 | 4 | // Menambahkan data ke dalam Set. 5 | numberSet.add(6); 6 | numberSet.addAll({2, 2, 3}); 7 | 8 | print(numberSet); 9 | } 10 | 11 | /// Output: 12 | /// {1, 4, 6, 2, 3} 13 | -------------------------------------------------------------------------------- /05_collections/02_set/03/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "02 Set 03" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /05_collections/02_set/03/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var numberSet = {1, 4, 6, 2, 3}; 3 | 4 | // Menghapus nilai 3 dari Set. 5 | numberSet.remove(3); 6 | 7 | print(numberSet); 8 | } 9 | 10 | /// Output: 11 | /// {1, 4, 6, 2} 12 | -------------------------------------------------------------------------------- /05_collections/02_set/04/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "02 Set 04" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /05_collections/02_set/04/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var numberSet = {1, 4, 6, 2, 3}; 3 | 4 | // Mendapatkan data Set pada indeks ke-2 5 | print(numberSet.elementAt(2)); 6 | } 7 | 8 | /// Output: 9 | /// 6 10 | -------------------------------------------------------------------------------- /05_collections/02_set/05/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "02 Set 05" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /05_collections/02_set/05/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var setA = {1, 2, 4, 5}; 3 | var setB = {1, 5, 7}; 4 | 5 | var union = setA.union(setB); 6 | var intersection = setA.intersection(setB); 7 | 8 | print("union: $union"); 9 | print("intersection: $intersection"); 10 | } 11 | 12 | /// Output: 13 | /// union: {1, 2, 4, 5, 7} 14 | /// intersection: {1, 5} 15 | -------------------------------------------------------------------------------- /05_collections/03_map/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "03 Map 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /05_collections/03_map/01/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var capital = { 3 | 'Jakarta': 'Indonesia', 4 | 'London': 'England', 5 | 'Tokyo': 'Japan', 6 | }; 7 | 8 | print(capital['Jakarta']); 9 | } 10 | 11 | /// Output: 12 | /// Indonesia 13 | -------------------------------------------------------------------------------- /05_collections/03_map/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "03 Map 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /05_collections/03_map/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var capital = { 3 | 'Jakarta': 'Indonesia', 4 | 'London': 'England', 5 | 'Tokyo': 'Japan', 6 | }; 7 | 8 | var mapKeys = capital.keys; 9 | print("mapKeys: $mapKeys"); 10 | 11 | var mapValues = capital.values; 12 | print("mapValues: $mapValues"); 13 | } 14 | 15 | /// Output: 16 | /// mapKeys = (Jakarta, London, Tokyo) 17 | /// mapValues = (Indonesia, England, Japan) 18 | -------------------------------------------------------------------------------- /05_collections/03_map/03/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "03 Map 03" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /05_collections/03_map/03/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var capital = { 3 | 'Jakarta': 'Indonesia', 4 | 'London': 'England', 5 | 'Tokyo': 'Japan', 6 | }; 7 | 8 | capital['New Delhi'] = 'India'; 9 | 10 | print(capital); 11 | } 12 | 13 | /// Output: 14 | /// {Jakarta: Indonesia, London: England, Tokyo: Japan, New Delhi: India} 15 | -------------------------------------------------------------------------------- /06_object_oriented_programming/01_class/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 Class" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /06_object_oriented_programming/01_class/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var dicodingCat = Animal('Gray', 2, 4.2); 3 | 4 | dicodingCat.eat(); 5 | dicodingCat.poop(); 6 | 7 | print(dicodingCat.weight); 8 | } 9 | 10 | class Animal { 11 | String name; 12 | int age; 13 | double weight; 14 | 15 | Animal(this.name, this.age, this.weight); 16 | 17 | void eat() { 18 | print('$name is eating.'); 19 | weight = weight + 0.2; 20 | } 21 | 22 | void sleep() { 23 | print('$name is sleeping.'); 24 | } 25 | 26 | void poop() { 27 | print('$name is pooping.'); 28 | weight = weight - 0.1; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /06_object_oriented_programming/02_properties_and_methods/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "02 Properties And Methods" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /06_object_oriented_programming/02_properties_and_methods/main.dart: -------------------------------------------------------------------------------- 1 | class Animal { 2 | String _name = ''; 3 | int _age = 0; 4 | double _weight = 0; 5 | 6 | Animal(this._name, this._age, this._weight); 7 | 8 | // Setter 9 | set name(String value) { 10 | _name = value; 11 | } 12 | 13 | // Getter 14 | double get weight => _weight; 15 | int get age => _age; 16 | 17 | // Methods 18 | void eat() { 19 | print('$_name is eating.'); 20 | _weight = _weight + 0.2; 21 | } 22 | 23 | void sleep() { 24 | print('$_name is sleeping.'); 25 | } 26 | 27 | void poop() { 28 | print('$_name is pooping.'); 29 | _weight = _weight - 0.1; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /06_object_oriented_programming/03_constructor/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "03 Constructor 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /06_object_oriented_programming/03_constructor/01/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var dicodingCat = Animal(); 3 | 4 | dicodingCat.name = 'Gray'; 5 | dicodingCat.age = 2; 6 | dicodingCat.weight = 4.2; 7 | } 8 | 9 | class Animal { 10 | // kelas tanpa constructor 11 | String name = ''; 12 | int age = 0; 13 | double weight = 0; 14 | } 15 | -------------------------------------------------------------------------------- /06_object_oriented_programming/03_constructor/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "03 Constructor 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /06_object_oriented_programming/03_constructor/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var dicodingCat = Animal('Gray', 2, 4.2); 3 | } 4 | 5 | class Animal { 6 | // kelas tanpa constructor 7 | String name = ''; 8 | int age = 0; 9 | double weight = 0; 10 | 11 | Animal(String name, int age, double weight) { 12 | this.name = name; 13 | this.age = age; 14 | this.weight = weight; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /06_object_oriented_programming/03_constructor/03/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "03 Constructor 03" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /06_object_oriented_programming/03_constructor/03/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var dicodingCat = Animal('Gray', 2, 4.2); 3 | } 4 | 5 | class Animal { 6 | String name = ''; 7 | int age = 0; 8 | double weight = 0; 9 | 10 | // Mendeklarasikan sebuah constructor 11 | Animal(String name, int age, double weight) { 12 | this.name = name; 13 | this.age = age; 14 | this.weight = weight; 15 | } 16 | // atau dengan cara berikut 17 | // Animal(this.name, this.age, this.weight); 18 | 19 | // Berikut beberapa contoh untuk mendeklarasikan 20 | // Named Constructor. 21 | Animal.name(this.name); 22 | Animal.age(this.age); 23 | Animal.weight(this.weight); 24 | } 25 | -------------------------------------------------------------------------------- /06_object_oriented_programming/03_constructor/04/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "03 Constructor 04" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /06_object_oriented_programming/03_constructor/04/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var dicodingCat = Animal.cat('Gray', 4.2); 3 | } 4 | 5 | class Animal { 6 | String name = ""; 7 | int age = 0; 8 | double weight = 0; 9 | 10 | Animal(this.name, this.age, this.weight); 11 | 12 | // Mendefinisikan properti kelas sebelum constructor body berjalan 13 | Animal.cat(this.name, this.weight) : age = 2 { 14 | print("This cat named $name is $age years old"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /06_object_oriented_programming/04_cascade_notation/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "04 Cascade Notation" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /06_object_oriented_programming/04_cascade_notation/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var dicodingCat = Animal('', 2, 4.2) 3 | ..name = 'Gray' 4 | ..eat(); 5 | } 6 | 7 | class Animal { 8 | String name = ''; 9 | int age = 0; 10 | double weight = 0; 11 | 12 | Animal(this.name, this.age, this.weight); 13 | 14 | void eat() { 15 | print('$name is eating.'); 16 | weight = weight + 0.2; 17 | } 18 | 19 | void sleep() { 20 | print('$name is sleeping.'); 21 | } 22 | 23 | void poop() { 24 | print('$name is pooping.'); 25 | weight = weight - 0.1; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /06_object_oriented_programming/05_inheritance/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "05 Inheritance" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /06_object_oriented_programming/05_inheritance/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var dicodingCat = Cat('Grayson', 2, 2.2, 'Gray'); 3 | 4 | dicodingCat.walk(); 5 | dicodingCat.eat(); 6 | 7 | print(dicodingCat.weight); 8 | } 9 | 10 | class Cat extends Animal { 11 | final String furColor; 12 | 13 | Cat(String name, int age, double weight, String furColor) 14 | : this.furColor = furColor, 15 | super(name, age, weight); 16 | 17 | void walk() { 18 | print('$name is walking'); 19 | } 20 | } 21 | 22 | class Animal { 23 | String name = ''; 24 | int age = 0; 25 | double weight = 0; 26 | 27 | Animal(this.name, this.age, this.weight); 28 | 29 | void eat() { 30 | print('$name is eating.'); 31 | weight = weight + 0.2; 32 | } 33 | 34 | void sleep() { 35 | print('$name is sleeping.'); 36 | } 37 | } 38 | 39 | /// Output: 40 | /// Grayson is walking 41 | /// Grayson is eating. 42 | /// 2.4000000000000004 43 | -------------------------------------------------------------------------------- /06_object_oriented_programming/06_implicit_interface/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "06 Implicit Interface" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /06_object_oriented_programming/06_implicit_interface/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var dicodingBird = Bird('Birdy', 2, 0.8, 'Gray'); 3 | 4 | dicodingBird.fly(); 5 | dicodingBird.eat(); 6 | } 7 | 8 | class Bird extends Animal implements Flyable { 9 | String featherColor; 10 | 11 | Bird(String name, int age, double weight, this.featherColor) 12 | : super(name, age, weight); 13 | 14 | @override 15 | void fly() { 16 | print('$name is flying'); 17 | } 18 | } 19 | 20 | class Flyable { 21 | void fly() {} 22 | } 23 | 24 | class Animal { 25 | String name = ''; 26 | int age = 0; 27 | double weight = 0; 28 | 29 | Animal(this.name, this.age, this.weight); 30 | 31 | void eat() { 32 | print('$name is eating.'); 33 | weight = weight + 0.2; 34 | } 35 | 36 | void sleep() { 37 | print('$name is sleeping.'); 38 | } 39 | } 40 | 41 | /// Output: 42 | /// Birdy is flying 43 | /// Birdy is eating. 44 | -------------------------------------------------------------------------------- /06_object_oriented_programming/07_enumerated_types/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "07 Enumerated Types 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /06_object_oriented_programming/07_enumerated_types/01/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | print(Rainbow.values); 3 | print(Rainbow.blue); 4 | print(Rainbow.orange.index); 5 | } 6 | 7 | enum Rainbow { red, orange, yellow, green, blue, indigo, violet } 8 | -------------------------------------------------------------------------------- /06_object_oriented_programming/07_enumerated_types/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "07 Enumerated Types 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /06_object_oriented_programming/07_enumerated_types/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var weatherForecast = Weather.cloudy; 3 | 4 | switch (weatherForecast) { 5 | case Weather.sunny: 6 | print("Today's weather forecast is sunny"); 7 | break; 8 | case Weather.cloudy: 9 | print("Today's weather forecast is cloudy"); 10 | break; 11 | case Weather.rain: 12 | print("Today's weather forecast is rain"); 13 | break; 14 | case Weather.storm: 15 | print("Today's weather forecast is storm"); 16 | break; 17 | } 18 | } 19 | 20 | enum Weather { sunny, cloudy, rain, storm } 21 | -------------------------------------------------------------------------------- /06_object_oriented_programming/07_enumerated_types/03/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "07 Enumerated Types 03" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /06_object_oriented_programming/07_enumerated_types/03/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var weatherForecast = Weather.cloudy; 3 | 4 | print(weatherForecast); 5 | } 6 | 7 | enum Weather { 8 | sunny(15), 9 | cloudy(34), 10 | rain(69), 11 | storm(83); 12 | 13 | final int rainAmount; 14 | 15 | const Weather(this.rainAmount); 16 | 17 | @override 18 | String toString() => 19 | "Today's weather forecast is $name with a $rainAmount% chance of rain"; 20 | } 21 | -------------------------------------------------------------------------------- /06_object_oriented_programming/08_mixins/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "08 Mixins" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /06_object_oriented_programming/08_mixins/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var arielNoah = Musician(); 3 | arielNoah.perform(); 4 | } 5 | 6 | abstract class Performer { 7 | void perform(); 8 | } 9 | 10 | mixin Dancer implements Performer { 11 | @override 12 | void perform() { 13 | print('Dancing'); 14 | } 15 | } 16 | 17 | mixin Singer implements Performer { 18 | @override 19 | void perform() { 20 | print('Singing'); 21 | } 22 | } 23 | 24 | class Musician extends Performer with Dancer, Singer { 25 | void showTime() { 26 | perform(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /06_object_oriented_programming/09_extension_methods/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "09 Extension Methods" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /06_object_oriented_programming/09_extension_methods/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var unsortedNumbers = [2, 5, 3, 1, 4]; 3 | print(unsortedNumbers); 4 | 5 | var sortedNumbers = unsortedNumbers.sortAsc(); 6 | 7 | print(sortedNumbers); 8 | } 9 | 10 | extension Sorting on List { 11 | List sortAsc() { 12 | var list = this; 13 | var length = this.length; 14 | 15 | for (int i = 0; i < length - 1; i++) { 16 | int min = i; 17 | for (int j = i + 1; j < length; j++) { 18 | if (list[j] < list[min]) { 19 | min = j; 20 | } 21 | } 22 | 23 | int tmp = list[min]; 24 | list[min] = list[i]; 25 | list[i] = tmp; 26 | } 27 | 28 | return list; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /07_functional_styles/01_anonymous_functions/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 Anonymous Functions" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /07_functional_styles/01_anonymous_functions/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var sum = (int num1, int num2) => num1 + num2; 3 | 4 | Function printLambda = () => print('This is lambda function'); 5 | 6 | // Memanggil nama variabel dari anonymous function 7 | print(sum(3, 4)); 8 | printLambda(); 9 | } 10 | -------------------------------------------------------------------------------- /07_functional_styles/02_higher_order_functions/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "02 Higher Order Functions" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /07_functional_styles/02_higher_order_functions/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | // Opsi 1 3 | int Function(int num1, int num2) sum = (int num1, int num2) => num1 + num2; 4 | myHigherOrderFunction('Hello', sum); 5 | 6 | // Opsi 2 7 | myHigherOrderFunction('Hello', (num1, num2) => num1 + num2); 8 | } 9 | 10 | void myHigherOrderFunction( 11 | String message, 12 | int Function(int num1, int num2) myFunction, 13 | ) { 14 | print(message); 15 | print(myFunction(3, 4)); 16 | } 17 | -------------------------------------------------------------------------------- /07_functional_styles/03_closures/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "03 Closures" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /07_functional_styles/03_closures/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var closureExample = calculate(2); 3 | closureExample(); 4 | closureExample(); 5 | } 6 | 7 | Function calculate(base) { 8 | var count = 1; 9 | 10 | return () => print("Value is ${base + count++}"); 11 | } 12 | -------------------------------------------------------------------------------- /08_dart_type_system/01_generic/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 Generic" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /08_dart_type_system/01_generic/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | List birdList = [Bird(), Dove(), Duck()]; 3 | } 4 | 5 | class Animal {} 6 | 7 | class Bird implements Animal {} 8 | 9 | class Dove implements Bird {} 10 | 11 | class Duck implements Bird {} 12 | -------------------------------------------------------------------------------- /08_dart_type_system/02_type_inference/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "02 Type Inference" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /08_dart_type_system/02_type_inference/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | Fish fish = Shark(); 3 | } 4 | 5 | class Animal {} 6 | 7 | /// Bird 8 | class Bird implements Animal {} 9 | 10 | class Dove implements Bird {} 11 | 12 | class Duck implements Bird {} 13 | 14 | /// Fish 15 | class Fish implements Animal {} 16 | 17 | class Shark implements Fish {} 18 | 19 | class FlyingFish implements Fish {} 20 | -------------------------------------------------------------------------------- /09_dart_futures/01_what_is_future/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 What Is Future 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /09_dart_futures/01_what_is_future/01/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | final myFuture = Future(() { 3 | print('Creating the future'); 4 | return 12; 5 | }); 6 | print('main() done'); 7 | } 8 | -------------------------------------------------------------------------------- /09_dart_futures/01_what_is_future/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 What Is Future 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /09_dart_futures/01_what_is_future/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() {} 2 | 3 | Future getOrder() { 4 | return Future.delayed(Duration(seconds: 3), () { 5 | return 'Coffee Boba'; 6 | }); 7 | } 8 | -------------------------------------------------------------------------------- /09_dart_futures/01_what_is_future/03/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 What Is Future 03" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /09_dart_futures/01_what_is_future/03/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | getOrder().then((value) { 3 | print('Your ordered: $value'); 4 | }); 5 | print('Getting your order...'); 6 | } 7 | 8 | Future getOrder() { 9 | return Future.delayed(Duration(seconds: 3), () { 10 | return 'Coffee Boba'; 11 | }); 12 | } 13 | -------------------------------------------------------------------------------- /09_dart_futures/01_what_is_future/04/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 What Is Future 04" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /09_dart_futures/01_what_is_future/04/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | getOrder().then((value) { 3 | print('Your ordered: $value'); 4 | }).catchError((error) { 5 | print('Sorry. $error'); 6 | }); 7 | print('Getting your order...'); 8 | } 9 | 10 | Future getOrder() { 11 | return Future.delayed(Duration(seconds: 3), () { 12 | var isStockAvailable = false; 13 | if (isStockAvailable) { 14 | return 'Coffee Boba'; 15 | } else { 16 | throw 'Our stock is not enough.'; 17 | } 18 | }); 19 | } 20 | -------------------------------------------------------------------------------- /09_dart_futures/01_what_is_future/05/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "01 What Is Future 04" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /09_dart_futures/01_what_is_future/05/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | getOrder().then((value) { 3 | print('Your ordered: $value'); 4 | }).catchError((error) { 5 | print('Sorry. $error'); 6 | }).whenComplete(() { 7 | print('Thank you'); 8 | }); 9 | print('Getting your order...'); 10 | } 11 | 12 | Future getOrder() { 13 | return Future.delayed(Duration(seconds: 3), () { 14 | var isStockAvailable = false; 15 | if (isStockAvailable) { 16 | return 'Coffee Boba'; 17 | } else { 18 | throw 'Our stock is not enough.'; 19 | } 20 | }); 21 | } 22 | -------------------------------------------------------------------------------- /09_dart_futures/02_future_with_async_await/01/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "02 Future With Async Await 01" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /09_dart_futures/02_future_with_async_await/01/main.dart: -------------------------------------------------------------------------------- 1 | void main() async { 2 | print('Getting your order...'); 3 | var order = await getOrder(); 4 | print('You order: $order'); 5 | } 6 | 7 | Future getOrder() { 8 | return Future.delayed(Duration(seconds: 3), () { 9 | return 'Coffee Boba'; 10 | }); 11 | } 12 | -------------------------------------------------------------------------------- /09_dart_futures/02_future_with_async_await/02/dartpad_metadata.yaml: -------------------------------------------------------------------------------- 1 | name: "02 Future With Async Await 02" 2 | mode: dart 3 | files: 4 | - name: main.dart 5 | # - name: test.dart 6 | # - name: solution.dart 7 | # - name: hint.txt -------------------------------------------------------------------------------- /09_dart_futures/02_future_with_async_await/02/main.dart: -------------------------------------------------------------------------------- 1 | void main() async { 2 | print('Getting your order...'); 3 | try { 4 | var order = await getOrder(); 5 | print('You order: $order'); 6 | } catch (error) { 7 | print('Sorry. $error'); 8 | } finally { 9 | print('Thank you'); 10 | } 11 | } 12 | 13 | Future getOrder() { 14 | return Future.delayed(Duration(seconds: 3), () { 15 | return 'Coffee Boba'; 16 | }); 17 | } 18 | --------------------------------------------------------------------------------