Buat spesifikasi dan deskripsi aplikasi yang mampu dibuat berdasarkan studi kasus ?
Alfamind adalah toko virtual yang memungkinkan pengguna atau pemilik toko untuk memiliki toko Alfamart tanpa perlu membangun toko fisik. Aplikasi ini memiliki berbagai fitur, seperti layar pembuka, registrasi dengan nomor HP, menambahkan detail toko, login, daftar barang dagangan, profil pemilik, dompet, top up, serta pop-up konfirmasi setelah top up. Spesifikasi aplikasi seperti berikut.
Layar Pembuka: Menampilkan layar pembuka saat aplikasi dibuka.
Registrasi dengan Nomor HP: Pengguna dapat mendaftar dengan menggunakan nomor HP.
Menambahkan Detail Toko: Pemilik toko dapat menambahkan detail toko mereka.
Login: Fitur untuk masuk ke dalam akun pengguna.
Daftar Barang Dagangan: Pengguna dapat melihat dan mengelola daftar barang dagangan.
Profil Pemilik: Menyediakan halaman profil untuk pemilik toko.
Dompet: Fitur dompet digital untuk mengelola saldo.
Top Up: Fasilitas untuk menambahkan saldo ke dalam dompet digital.
Pop-up Setelah Top Up: Menampilkan pop-up waktu untuk transfer.
Buat use case dan flowchart yang akan diimplementasikan?
USECASE
FLOWCHART
Gambarkan UI yang akan diimplementasikan.
Screen Pembuka
Sign Up
Lanjutan Sign Up / Detail Toko
Login
Daftar Dagangan
Profile Owner
Dompet
Top Up
Top Up Notif
Implementasikan rancangan
Rancangan diimplementasikan dengan flutter & dart. Berikut merupakan link dari kode sumber program yang telah dibuat.
Pada blog ini, akan dibuat layar utama untuk aplikasi bernama MyArtist, sebuah aplikasi pemutar musik yang memungkinkan penggemar mengikuti berita terbaru dari artis favorit mereka. Bagian ini akan membahas bagaimana mengubah desain aplikasi Anda agar terlihat bagus di berbagai platform.
1. Mendapatkan kode awal
Untuk meng-clone codelab ini dari GitHub, jalankan perintah berikut:
git clone https://github.com/flutter/codelabs.git
cd codelabs/boring_to_beautiful/step_01/
2. Tipografi Teks digunakan di berbagai tempat. Teks sangat berguna sebagai alat komunikasi kepada pengguna. Apakah aplikasi Anda ditujukan untuk memberikan kesan ramah dan menyenangkan, atau mungkin tepercaya dan profesional? Ada alasan mengapa aplikasi perbankan favorit Anda tidak menggunakan font Comic Sans. Tampilan teks membentuk kesan pertama pengguna tentang aplikasi Anda. Berikut beberapa cara untuk menggunakan teks dengan lebih cermat. Di lib/src/shared/router.dart, tambahkan ikon utama yang berbeda untuk setiap tujuan navigasi (beranda, playlist, dan orang)
constList<NavigationDestination> destinations =[ NavigationDestination( label:'Home', icon:Icon(Icons.home),// Modify this line route:'/', ), NavigationDestination( label:'Playlists', icon:Icon(Icons.playlist_add_check),// Modify this line route:'/playlists', ), NavigationDestination( label:'Artists', icon:Icon(Icons.people),// Modify this line route:'/artists', ), ];
Tambahkan font dengan $ flutter pub add google_fonts
4. Tema
Tema membantu menghadirkan desain dan keseragaman terstruktur ke aplikasi dengan menentukan sistem kumpulan warna dan gaya teks. Dengan tema, Anda dapat menerapkan UI dengan cepat tanpa harus pusing memikirkan detail kecil seperti menentukan warna yang tepat untuk setiap widget.
Contoh ini menggunakan penyedia tema yang terletakdi lib/src/shared/providers/theme.dart untuk membuat widget dan warna bertema konsisten di seluruh aplikasi:
Color value(ThemeProvider provider){ return provider.custom(this); } }
Untuk menggunakan penyedia tema, buat instance dan teruskan ke objek tema cakupan di MaterialApp, yang terletak di lib/src/shared/app.dart. Tema akan diwarisi oleh objek Theme bertingkat:
class _MyAppState extendsState<MyApp>{ final settings =ValueNotifier(ThemeSettings( sourceColor:Colors.pink, themeMode:ThemeMode.system, )); @override Widget build(BuildContext context){ returnBlocProvider<PlaybackBloc>( create:(context)=>PlaybackBloc(), child:DynamicColorBuilder( builder:(lightDynamic, darkDynamic)=>ThemeProvider( lightDynamic: lightDynamic, darkDynamic: darkDynamic, settings: settings, child:NotificationListener<ThemeSettingChange>( onNotification:(notification){ settings.value = notification.settings; returntrue; }, child:ValueListenableBuilder<ThemeSettings>( valueListenable: settings, builder:(context, value, _){ final theme =ThemeProvider.of(context);// Add this line returnMaterialApp.router( debugShowCheckedModeBanner:false, title:'Flutter Demo', theme: theme.light(settings.value.sourceColor),// Add this line routeInformationParser: appRouter.routeInformationParser, routerDelegate: appRouter.routerDelegate, ); }, ), )), ), ); } }
5. Desain Adaptif
Dengan Flutter, Anda dapat mem-build aplikasi yang berjalan hampir di mana saja. Namun, hal ini bukan berarti bahwa setiap aplikasi dapat berperilaku sama di semua layar perangkat. Pengguna mengharapkan perilaku dan fitur yang berbeda dari berbagai platform.
File lib/src/shared/views/adaptive_navigation.dart berisi class navigasi tempat Anda dapat memberikan daftar tujuan dan konten untuk merender isi. Karena Anda menggunakan tata letak ini di beberapa layar, ada tata letak dasar bersama untuk diteruskan ke setiap turunan. Kolom samping navigasi cocok untuk desktop dan layar besar, tetapi jadikan tata letak tersebut mobile-friendly dengan menampilkan menu navigasi bawah di perangkat seluler.
// Mobile Layout // Add from here... returnScaffold( body: child, bottomNavigationBar:NavigationBar( destinations: destinations, selectedIndex: selectedIndex, onDestinationSelected: onDestinationSelected, ), ); // ... To here. }, ); } }
6. Animasi
Gerakan dan animasi adalah cara yang bagus untuk memberikan kesan aplikasi yang dinamis dan penuh semangat, serta untuk memberikan masukan saat pengguna berinteraksi dengan aplikasi.
ThemeProvider menentukan PageTransitionsTheme dengan animasi transisi layar untuk platform seluler (iOS, Android). Pengguna desktop sudah mendapatkan masukan dari klik mouse atau trackpad, sehingga animasi transisi halaman tidak diperlukan.
Flutter menyediakan animasi transisi layar yang dapat dikonfigurasikan untuk aplikasi Anda berdasarkan platform target seperti yang terlihat di lib/src/shared/providers/theme.dart: