v0.3.0
shared_preferences_riverpod
riverpod과 shared_preferences 사용하는 방법 도움
29좋아요 26930일 다운로드130Pub 점수
AndroidiOSWebmacOSWindowsLinux
gamako/shared_preferences_riverpod open-source repository details.
아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.
Make it easier to access SharePreferences using Riverpod's Provider.
Provider with createPrefProvider and generics parameter.final booPrefProvider = createPrefProvider<bool>(
prefs: (_) => prefs,
prefKey: "boolValue",
defaultValue: false,
);
ref.watch(provider).await ref.read(provider).update(newValue);.Consumer(builder: (context, ref, _) {
return CheckboxListTile(
title: Text('checkbox'),
value: ref.watch(booPrefProvider),
onChanged: (v) async {
if (v != null) await ref.read(booPrefProvider.notifier).update(v);
},
);
}
Provider with createPrefProvider and map functions.enum EnumValues {
foo,
bar,
}
final enumPrefProvider = createMapPrefProvider<EnumValues>(
prefs: (_) => prefs,
prefKey: "enumValue",
mapFrom: (v) => EnumValues.values
.firstWhere((e) => e.toString() == v, orElse: () => EnumValues.foo),
mapTo: (v) => v.toString(),
);
ref.watch(provider).await ref.read(provider).update(newValue);.Consumer(builder: (context, ref, _) {
return RadioListTile(
title: Text('value1'),
value: EnumValues.foo,
groupValue: ref.watch(enumPrefProvider),
onChanged: (EnumValues? v) async {
if (v != null) await ref.read(enumPrefProvider.notifier).update(v);
},
);
}
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:shared_preferences_riverpod/shared_preferences_riverpod.dart';
late SharedPreferences prefs;
final booPrefProvider = createPrefProvider<bool>(
prefs: (_) => prefs,
prefKey: "boolValue",
defaultValue: false,
);
enum EnumValues {
foo,
bar,
}
final enumPrefProvider = createMapPrefProvider<EnumValues>(
prefs: (_) => prefs,
prefKey: "enumValue",
mapFrom: (v) => EnumValues.values
.firstWhere((e) => e.toString() == v, orElse: () => EnumValues.foo),
mapTo: (v) => v.toString(),
);
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
prefs = await SharedPreferences.getInstance();
runApp(ProviderScope(child: MyApp()));
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Sample',
home: Scaffold(
appBar: AppBar(),
body: Consumer(builder: (context, ref, _) {
return ListView(children: [
CheckboxListTile(
title: Text('BoolPrefNotifier ${ref.watch(booPrefProvider)}'),
value: ref.watch(booPrefProvider),
onChanged: (v) async {
if (v != null)
await ref.read(booPrefProvider.notifier).update(v);
},
),
RadioListTile(
title: Text('${EnumValues.foo.toString()}'),
value: EnumValues.foo,
groupValue: ref.watch(enumPrefProvider),
onChanged: (EnumValues? v) async {
if (v != null)
await ref.read(enumPrefProvider.notifier).update(v);
},
),
RadioListTile(
title: Text('${EnumValues.bar.toString()}'),
value: EnumValues.bar,
groupValue: ref.watch(enumPrefProvider),
onChanged: (EnumValues? v) async {
if (v != null)
await ref.read(enumPrefProvider.notifier).update(v);
},
),
]);
}),
),
);
}
}
의존성 목록 7 개
{"sdk":"flutter"}^2.0.15^2.0.0{"sdk":"flutter"}^2.0.1^2.0.0^2.1.0사용 목적에 따라 검색하고 개발 활동을 비교한 뒤 원본 저장소에서 요구 사항을 확인하세요.
“A repository is the most basic element of GitHub.”
GitHub Docs — About repositories ↗