Anda di halaman 1dari 22

Jawaban Test

Nomor : 1
1. Buat project Firebase Message

2. Halaman setelah selesai buat project firebase

3. Register firebase android


4. Daftar bundle id yang sudah dibuat pada flutter project, misalkan
com.example.treasury
5. Download google-service.json terlebih dahulu

6. Tambahkan firebase SDK pada <project>/build.gradle


7. Tambahkan lagi <project>/<app-module>/build.gradle

8. lalu klik continue to console

9. lalu simpan file google-service.json ke android/app


10. ubah min SDK version menjadi ke 21

11. Tambahkan library


12. Lalu tambahkan kode berikut agar firebase message bisa berjalan
13. lalu coba kirim pesan melalu firebase message

Nomor 2 :

A. ? : Membuat nilai menjadi akan mengeluarkan nilai null, kecuali kita yang
menentukan nilainya null
B. ! : Membuat nilai bukan 0, atau sudah fix tidak ada null di dalam nilai tersebut
C. .. : tidak akan mengulang target yang sama

D. … : untuk memasukan semua element ke daftar lain

E. => : fungsi yang hanya menyipkan 1 ekpresi, tidak bisa di tambahkan kondisi
if else
F. <T> : Type Generik yang sudah pasti, dan nilai yang sama dengan type yang
sudah dibuat

G. <T> [] :
H. _ (underscore) : sebuat class, variabel yang bersifat private, yang tidak bisa di
panggil di file lain atau di class lain.

I. @protected :memberikan petunjuk ketika fungsi sedang digunakan diluar,


yang digunakan pada dart analyzer

J. this :
K. const : nilainya sudah diketahui ketika sedang berjalan proses kompilasi dan
tidak akan berubah nilainya

L. libary : untuk mengikat sebuah class yang ada file lain dan di panggil di file
tertentu

M. as : alias digunakan untuk menganti nama opsional atau mengubah type data

Nomo 3 :
● Alias digunakan untuk mendeklarasikan bidang dan akan mengembalikan tipe
yang diberikan

Nomor 4 :
● saya menggunakan state management BLOC, alasannya karena sudah
sering menggunakan bloc, lebih mudah dipahami dan banyak beberapa
contohnya di google untuk belajar
● di dalam BLOC, istiliah yang sering digunakan di dalam BLOC, yaitu event,
state, BLOC
● Event : merupakan inputan yang akan dilakukan.
● State : merupakan kondisi yang akan terjadi ketika ingin terjadi yang bisa kita
tentukan dari hasil event.
● BLOC : komponen yang menjalankan event dan state
● Contoh
Event
State
BLOC
Nomor 5 :
● Stateless Widget : Widget yang tidak dapat diubah
● Stateful Widget : Widget yang dapat diubah, dan ada setState untuk
mengubah widget tersebut

Nomor 6 :
● Margin : memperkecil sisi luar widget

● Padding : memperkecil sisi dalam widget

● Alignment: menyesuaikan posisi widget


○ Alignment.center
○ Alignment.topLeft

Nomor 7 :

import 'package:flutter/material.dart';

Future<void> main() async {

runApp(const MyApp());
}

class MyApp extends StatelessWidget {


const MyApp({Key? key}) : super(key: key);

// This widget is the root of your application.


@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(),
);
}
}

class MyHomePage extends StatefulWidget {


const MyHomePage({Key? key}) : super(key: key);

@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int? selected;
//attention
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: FloatingActionButton(
onPressed: () {},
backgroundColor: Colors.pink,
child: const Icon(Icons.add),
),
appBar: AppBar(
centerTitle: false,
title: Column(
children: const [
Text(
'Main Page',
),
Text(
'Welcome',
),
],
),
actions: [
IconButton(
onPressed: () {},
icon: const Icon(
Icons.add,
),
),
],
),
body: SingleChildScrollView(
child: Column(
children: [
const SizedBox(height: 15),
Row(
children: [
const SizedBox(width: 10),
_headerInformation('C1'),
const SizedBox(width: 15),
_headerInformation('C2'),
const SizedBox(width: 15),
_headerInformation('C3'),
const SizedBox(width: 10),
],
),
const SizedBox(height: 100),
ExpansionPanelList.radio(
initialOpenPanelValue: 2,
children: List.generate(
20,
(index) => ExpansionPanelRadio(
value: index,
headerBuilder: (BuildContext context, bool isExpanded) {
return ListTile(
title: Text('Menu ${index + 1}'),
);
},
body: Column(
children: [
ListTile(
trailing: GestureDetector(
onTap: () {
final snackBar = SnackBar(
content: Text('Menu ${index + 1}'),
);

ScaffoldMessenger.of(context)
.showSnackBar(snackBar);
},
child: Container(
height: 30,
width: 30,
color: Colors.blue,
alignment: Alignment.center,
child: const Text(
'Ok',
),
),
),
),
ListTile(
title: Text(
'Name ${index + 1}',
),
subtitle: Text(
'Address ${index + 1}',
),
),
],
),
),
),
),
],
),
),
);
}

Widget _headerInformation(String index) {


return Expanded(
child: Container(
alignment: Alignment.center,
width: double.infinity,
height: 100,
color: Colors.red,
child: Text(index),
),
);
}
}

Anda mungkin juga menyukai