Flutter-এ SharedPreferences ব্যবহার করে ডেটা সংরক্ষণ করা একটি সাধারণ এবং কার্যকরী পদ্ধতি, যা আপনাকে ব্যবহারকারীর ডিভাইসে ছোট ডেটা যেমন স্ট্রিং, ইন্টিজার, বুলিয়ান, এবং ডাবল সেভ করতে সাহায্য করে। এটি মূলত ব্যবহারকারীর অ্যাপ্লিকেশনের সেটিংস, প্রেফারেন্স, লগইন তথ্য ইত্যাদি সংরক্ষণ করতে ব্যবহৃত হয়।
SharedPreferences সেটআপ করা
প্রথমে pubspec.yaml ফাইলে shared_preferences প্যাকেজটি যোগ করতে হবে:
dependencies:
flutter:
sdk: flutter
shared_preferences: ^2.0.15
এরপর flutter pub get কমান্ড চালিয়ে প্যাকেজটি ইন্সটল করুন।
SharedPreferences দিয়ে ডেটা সংরক্ষণ এবং রিড করার উদাহরণ
Flutter-এ SharedPreferences ব্যবহার করে কিভাবে ডেটা সংরক্ষণ এবং রিড করা যায় তার উদাহরণ নিচে দেওয়া হলো:
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
String? _savedData;
@override
void initState() {
super.initState();
_loadData(); // অ্যাপ চালু হলে ডেটা লোড করা হচ্ছে
}
// ডেটা লোড করার ফাংশন
Future<void> _loadData() async {
final prefs = await SharedPreferences.getInstance();
setState(() {
_savedData = prefs.getString('saved_text') ?? 'No data saved';
});
}
// ডেটা সংরক্ষণ করার ফাংশন
Future<void> _saveData(String value) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setString('saved_text', value);
_loadData(); // ডেটা আপডেট করার পর তা রিফ্রেশ করে দেখানো হচ্ছে
}
// ডেটা রিমুভ করার ফাংশন
Future<void> _removeData() async {
final prefs = await SharedPreferences.getInstance();
await prefs.remove('saved_text');
_loadData(); // ডেটা রিমুভ করে তা রিফ্রেশ করে দেখানো হচ্ছে
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('SharedPreferences Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
_savedData ?? 'No data',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
_saveData('Hello, Flutter!');
},
child: Text('Save Data'),
),
ElevatedButton(
onPressed: _removeData,
child: Text('Remove Data'),
),
],
),
),
);
}
}
কোডের ব্যাখ্যা
- SharedPreferences ব্যবহার করা হয়েছে ব্যবহারকারীর ডিভাইসে ছোট ডেটা সংরক্ষণ করার জন্য।
- _loadData: এটি একটি ফাংশন যা SharedPreferences থেকে ডেটা রিড করে এবং setState এর মাধ্যমে UI-তে আপডেট করে।
- _saveData: এটি একটি ফাংশন যা SharedPreferences এ ডেটা সেভ করে। এখানে ডেটা সেভ করার জন্য setString মেথড ব্যবহার করা হয়েছে।
- _removeData: এটি SharedPreferences থেকে নির্দিষ্ট ডেটা রিমুভ করে।
SharedPreferences দিয়ে বিভিন্ন ধরনের ডেটা সংরক্ষণ করা
SharedPreferences-এ শুধুমাত্র প্রিমিটিভ ডেটা টাইপ (String, int, double, bool, এবং String লিস্ট) সেভ করা যায়। নিচে বিভিন্ন ধরনের ডেটা সেভ এবং রিড করার উদাহরণ দেওয়া হলো:
১. String সংরক্ষণ করা
Future<void> saveString(String value) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setString('my_string_key', value);
}
Future<String?> getString() async {
final prefs = await SharedPreferences.getInstance();
return prefs.getString('my_string_key');
}
২. int সংরক্ষণ করা
Future<void> saveInt(int value) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setInt('my_int_key', value);
}
Future<int?> getInt() async {
final prefs = await SharedPreferences.getInstance();
return prefs.getInt('my_int_key');
}
৩. double সংরক্ষণ করা
Future<void> saveDouble(double value) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setDouble('my_double_key', value);
}
Future<double?> getDouble() async {
final prefs = await SharedPreferences.getInstance();
return prefs.getDouble('my_double_key');
}
৪. bool সংরক্ষণ করা
Future<void> saveBool(bool value) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setBool('my_bool_key', value);
}
Future<bool?> getBool() async {
final prefs = await SharedPreferences.getInstance();
return prefs.getBool('my_bool_key');
}
৫. List<String> সংরক্ষণ করা
Future<void> saveStringList(List<String> value) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setStringList('my_list_key', value);
}
Future<List<String>?> getStringList() async {
final prefs = await SharedPreferences.getInstance();
return prefs.getStringList('my_list_key');
}
SharedPreferences ব্যবহারের টিপস
Key Management: প্রতিটি ডেটা সেভ করার সময় একটি কির প্রয়োজন হয়। কির নাম সবসময় ইউনিক এবং পরিষ্কার রাখুন, যাতে পরবর্তীতে সহজে বোঝা যায়।
Large Data Storage: SharedPreferences শুধুমাত্র ছোট ডেটা (যেমন স্ট্রিং, বুলিয়ান, ইত্যাদি) সংরক্ষণ করার জন্য উপযুক্ত। বড় ডেটা (যেমন JSON অবজেক্ট বা বড় লিস্ট) স্টোর করতে SharedPreferences ব্যবহার না করে, SQLite বা local storage ব্যবহার করুন।
Security: সংবেদনশীল তথ্য যেমন পাসওয়ার্ড বা টোকেন সংরক্ষণের ক্ষেত্রে secure storage ব্যবহার করা ভালো। flutter_secure_storage বা crypto প্যাকেজ ব্যবহার করে ডেটা এনক্রিপ্ট করা যেতে পারে।
Initialization: SharedPreferences অ্যাসিনক্রোনাস পদ্ধতিতে কাজ করে, তাই অ্যাপ্লিকেশনের স্টার্টআপের সময় যদি এটি ইনিশিয়ালাইজ করতে হয়, তবে async এবং await ব্যবহার করে অ্যাসিনক্রোনাসভাবে পরিচালনা করুন।
সারসংক্ষেপ
- SharedPreferences একটি কার্যকরী পদ্ধতি, যা ব্যবহারকারীর ডিভাইসে ছোট ডেটা সংরক্ষণ করতে সাহায্য করে।
- এটি সাধারণত অ্যাপ প্রেফারেন্স, ব্যবহারকারীর সেশন, বা ছোট সেটিংস সংরক্ষণ করতে ব্যবহৃত হয়।
- Flutter-এ setString, getString, setInt, getInt ইত্যাদি মেথড ব্যবহার করে আপনি বিভিন্ন ধরনের ডেটা সেভ এবং রিড করতে পারেন।
- সংবেদনশীল তথ্য সংরক্ষণের ক্ষেত্রে নিরাপত্তার জন্য secure storage ব্যবহার করা উত্তম।
এইভাবে, Flutter-এ SharedPreferences ব্যবহার করে আপনি ডেটা সংরক্ষণ এবং রিড করতে পারেন, যা অ্যাপ্লিকেশনকে আরও কার্যকরী এবং ব্যবহারবান্ধব করে তোলে।
Read more