Flutter 앱에서 사용자가 선택한 신문 탭 목록을 유지하고 싶다면, shared_preferences 패키지를 사용할 수 있습니다. shared_preferences는 Flutter 앱에서 간단한 키-값 쌍으로 데이터를 저장하고 검색하는 데 사용되는 영구 저장소입니다.
다음은 shared_preferences를 사용하여 사용자가 선택한 신문 탭 목록을 저장하는 예제입니다.
1. shared_preferences 패키지 추가
먼저, pubspec.yaml
파일에 shared_preferences 패키지를 추가해야 합니다. 아래와 같이 dependencies 섹션에 shared_preferences 패키지를 추가합니다.
dependencies:
flutter:
sdk: flutter
shared_preferences: ^2.0.6
이후 터미널에서 flutter pub get
명령어를 실행하여 패키지를 설치합니다.
2. 신문 탭 목록 저장 및 불러오기
다음은 사용자가 선택한 신문 탭 목록을 저장하고 불러오는 코드입니다.
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
class NewsTabSelectionPage extends StatefulWidget {
@override
_NewsTabSelectionPageState createState() => _NewsTabSelectionPageState();
}
class _NewsTabSelectionPageState extends State<NewsTabSelectionPage> {
List<String> selectedTabs = [];
@override
void initState() {
super.initState();
loadSelectedTabs();
}
void loadSelectedTabs() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
List<String>? savedTabs = prefs.getStringList('selectedTabs');
if (savedTabs != null) {
setState(() {
selectedTabs = savedTabs;
});
}
}
void saveSelectedTabs() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setStringList('selectedTabs', selectedTabs);
}
void toggleTab(String tab) {
setState(() {
if (selectedTabs.contains(tab)) {
selectedTabs.remove(tab);
} else {
selectedTabs.add(tab);
}
});
}
@override
void dispose() {
saveSelectedTabs();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('신문 탭 선택'),
),
body: ListView(
children: [
ListTile(
title: Text('스포츠'),
onTap: () => toggleTab('스포츠'),
trailing: Checkbox(
value: selectedTabs.contains('스포츠'),
onChanged: (value) => toggleTab('스포츠'),
),
),
ListTile(
title: Text('연예'),
onTap: () => toggleTab('연예'),
trailing: Checkbox(
value: selectedTabs.contains('연예'),
onChanged: (value) => toggleTab('연예'),
),
),
// 추가적인 신문 탭 항목을 여기에 추가할 수 있습니다.
],
),
);
}
}
위의 예제에서는 selectedTabs
라는 List<String>
을 사용하여 사용자가 선택한 신문 탭을 저장합니다. loadSelectedTabs
함수는 이전에 저장한 탭 목록을 불러오고, saveSelectedTabs
함수는 현재 선택한 탭 목록을 저장합니다.
체크박스를 통해 탭을 선택하거나 해제할 수 있으며, 탭을 선택할 때마다 toggleTab
함수가 호출되며 선택한 탭을 selectedTabs
에 추가하거나 제거합니다.
추가적인 신문 탭 항목을 필요에 따라 리스트에 추가할 수 있습니다.
이제 NewsTabSelectionPage
위젯을 앱의 해당 위치에서 호출하면 사용자가 선택한 신문 탭이 shared_preferences를 통해 유지될 것입니다.
결론
shared_preferences 패키지를 사용하여 Flutter 앱에서 사용자가 선택한 신문 탭 목록을 저장할 수 있습니다. 이를 통해 앱을 재실행해도 사용자의 선호 설정을 유지할 수 있습니다.