Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- dependencies:
- flutter:
- sdk: flutter
- fluttertoast: ^8.2.2
- convex_bottom_bar: ^3.2.0
- import 'package:flutter/material.dart';
- import 'package:fluttertoast/fluttertoast.dart';
- import 'package:convex_bottom_bar/convex_bottom_bar.dart';
- void main() {
- runApp(MainApp());
- }
- class MainApp extends StatelessWidget {
- @override
- Widget build(BuildContext context) {
- return MaterialApp(
- debugShowCheckedModeBanner: false,
- home: HalamanPertama(),
- );
- }
- }
- class HalamanPertama extends StatelessWidget {
- TextEditingController username = TextEditingController();
- TextEditingController password = TextEditingController();
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(
- title: Text('Tugas Pertemuan 12'),
- ),
- body: Center(
- child: Column(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Text(
- 'Silakan login untuk mengakses halaman ini!',
- style: TextStyle(
- fontSize: 15,
- fontWeight: FontWeight.bold,
- color: Colors.blue,
- ),
- ),
- SizedBox(height: 30),
- Padding(
- padding: const EdgeInsets.fromLTRB(25, 0, 25, 10),
- child: TextField(
- controller: username,
- decoration: InputDecoration(
- prefixIcon: Icon(Icons.person),
- labelText: 'Username',
- hintText: 'Masukkan username Anda',
- border: OutlineInputBorder(),
- ),
- ),
- ),
- Padding(
- padding: const EdgeInsets.fromLTRB(25, 0, 25, 20),
- child: TextField(
- controller: password,
- obscureText: true,
- decoration: InputDecoration(
- prefixIcon: Icon(Icons.password),
- labelText: 'Password',
- hintText: 'Masukkan password Anda',
- border: OutlineInputBorder(),
- ),
- ),
- ),
- Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- ElevatedButton(
- onPressed: () {
- String uname = username.text;
- String pass = password.text;
- //logika percabangan
- if (uname == 'admin' && pass == '12345') {
- //logika login sukses
- Navigator.push(
- context,
- MaterialPageRoute(builder: (context) => HalamanKedua()),
- );
- Fluttertoast.showToast(
- msg: 'Login Sukses',
- toastLength: Toast.LENGTH_LONG,
- );
- } else {
- //logika login gagal
- Fluttertoast.showToast(
- msg:
- 'Login Gagal!! Silakan periksa kembali username dan password Anda',
- toastLength: Toast.LENGTH_LONG,
- );
- }
- },
- child: Text('LOGIN'),
- ),
- SizedBox(width: 20),
- ElevatedButton(
- onPressed: () {
- //logic ketika tombol di tekan
- username.clear();
- password.clear();
- },
- child: Text('RESET'),
- ),
- ],
- ),
- ],
- ),
- ),
- );
- }
- }
- class HalamanKedua extends StatelessWidget {
- final List<dataBuah> buah = [
- dataBuah(nama: 'Apel', gambar: 'images/apel.jpg'),
- dataBuah(nama: 'Durian', gambar: 'images/durian.jpg'),
- dataBuah(nama: 'Jeruk', gambar: 'images/jeruk.jpg'),
- dataBuah(nama: 'Mangga', gambar: 'images/mangga.jpg'),
- dataBuah(nama: 'Salak', gambar: 'images/salak.jpg'),
- dataBuah(nama: 'Tebu', gambar: 'images/tebu.jpg'),
- ];
- @override
- Widget build(BuildContext context) {
- return DefaultTabController(
- length: 3,
- child: Scaffold(
- appBar: AppBar(
- title: Text('Tugas Pertemuan 12'),
- ),
- body: TabBarView(
- children: [
- GridView.builder(
- gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
- crossAxisCount: 3,
- crossAxisSpacing: 5.0,
- mainAxisSpacing: 5.0,
- ),
- itemCount: buah.length,
- itemBuilder: (context, index) {
- return GridItem(ambilData: buah[index]);
- }),
- ListView.builder(
- itemCount: buah.length,
- itemBuilder: (context, index) {
- return ListItem(ambilData: buah[index]);
- }),
- HalamanProfile(),
- ],
- ),
- bottomNavigationBar: ConvexAppBar(
- items: [
- TabItem(icon: Icons.home, title: 'Beranda'),
- TabItem(icon: Icons.image, title: 'Buah'),
- TabItem(icon: Icons.person, title: 'Profile'),
- ],
- ),
- ),
- );
- }
- }
- class dataBuah {
- final String nama;
- final String gambar;
- dataBuah({required this.nama, required this.gambar});
- }
- class GridItem extends StatelessWidget {
- final dataBuah ambilData;
- GridItem({required this.ambilData});
- @override
- Widget build(BuildContext context) {
- return Card(
- child: Column(
- children: [
- Image.asset(
- ambilData.gambar,
- height: 100,
- fit: BoxFit.cover,
- width: MediaQuery.of(context).size.width,
- ),
- SizedBox(height: 10),
- Text(ambilData.nama),
- ],
- ),
- );
- }
- }
- class ListItem extends StatelessWidget {
- final dataBuah ambilData;
- ListItem({required this.ambilData});
- @override
- Widget build(BuildContext context) {
- return Card(
- child: ListTile(
- leading: CircleAvatar(
- radius: 30,
- backgroundImage: AssetImage(ambilData.gambar),
- ),
- title: Text(ambilData.nama),
- ),
- );
- }
- }
- class HalamanProfile extends StatelessWidget {
- @override
- Widget build(BuildContext context) {
- return Center(
- child: Column(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Icon(
- Icons.person,
- size: 150.0,
- ),
- SizedBox(height: 35),
- Text(
- 'YOCKY ANDREA',
- style: TextStyle(
- fontSize: 20,
- fontWeight: FontWeight.bold,
- ),
- ),
- SizedBox(height: 20),
- Text('(21220522)'),
- SizedBox(height: 20),
- Text('SI - 5J'),
- SizedBox(height: 35),
- ElevatedButton(
- onPressed: () {
- //logic ketika tombol di tekan
- Navigator.pop(context);
- },
- child: Text('Logout'),
- ),
- ],
- ),
- );
- }
- }
Add Comment
Please, Sign In to add comment