Advertisement
yudiwibisono

shared_pref_cubit

Jun 3rd, 2023 (edited)
988
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 2.47 KB | None | 0 0
  1. import 'package:flutter/material.dart';
  2. import 'package:shared_preferences/shared_preferences.dart';
  3. import 'package:flutter_bloc/flutter_bloc.dart';
  4.  
  5. void main() => runApp(const MyApp());
  6.  
  7. class MyApp extends StatelessWidget {
  8.   const MyApp({Key? key}) : super(key: key);
  9.  
  10.   @override
  11.   Widget build(BuildContext context) {
  12.     return MaterialApp(
  13.       home: BlocProvider(
  14.         create: (_) => UserCubit(),
  15.         child: const HalamanUtama(),
  16.       ),
  17.     );
  18.   }
  19. }
  20.  
  21. //model berisi data/state
  22. class UserModel {
  23.   String userId;
  24.   UserModel({required this.userId}); //constructor
  25. }
  26.  
  27. //cubit untuk userModel
  28. class UserCubit extends Cubit<UserModel> {
  29.   //UserCubit(super.initialState);
  30.  
  31.   UserCubit() : super(UserModel(userId: "")) {
  32.     //penting: inisialiasi
  33.     ambilDataUser();
  34.   }
  35.  
  36.   Future<void> ambilDataUser() async {
  37.     final prefs = await SharedPreferences.getInstance();
  38.     emit(UserModel(userId: prefs.getString('userId') ?? ""));
  39.   }
  40.  
  41.   //simpan ke sharepref
  42.   Future<void> simpanDataUser() async {
  43.     String user = "budiWati";
  44.     final prefs = await SharedPreferences.getInstance();
  45.     await prefs.setString('userId', user);
  46.     emit(UserModel(userId: user));
  47.   }
  48.  
  49.   //hapus data sharedpref
  50.   Future<void> hapusDataUser() async {
  51.     final prefs = await SharedPreferences.getInstance();
  52.     await prefs.remove('userId');
  53.     emit(UserModel(userId: ""));
  54.   }
  55. }
  56.  
  57. class HalamanUtama extends StatelessWidget {
  58.   const HalamanUtama({Key? key}) : super(key: key);
  59.  
  60.   @override
  61.   Widget build(BuildContext context) {
  62.     return MaterialApp(home: Scaffold(body: Center(
  63.         child: BlocBuilder<UserCubit, UserModel>(builder: (context, user) {
  64.       if (user.userId == "") {
  65.         return Center(
  66.             child:
  67.                 Column(mainAxisAlignment: MainAxisAlignment.center, children: [
  68.           const Text("user belum login"),
  69.           ElevatedButton(
  70.             onPressed: () {
  71.               context.read<UserCubit>().simpanDataUser();
  72.             },
  73.             child: Text("Login"),
  74.           ),
  75.         ]));
  76.       } else {
  77.         return (Center(
  78.             child:
  79.                 Column(mainAxisAlignment: MainAxisAlignment.center, children: [
  80.           Text("user id: ${user.userId}"),
  81.           ElevatedButton(
  82.             onPressed: () {
  83.               context.read<UserCubit>().hapusDataUser();
  84.             },
  85.             child: Text("Logout"),
  86.           ),
  87.         ])));
  88.       }
  89.     }))));
  90.   }
  91. }
  92.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement