Flutter를 사용하여 로컬 저장소에 저장하는 방법은 무엇입니까?


98

Android에서 세션 전반에 걸쳐 유지하려는 정보가 있으면 SharedPreferences를 사용하거나 SQLite 데이터베이스를 만들거나 장치에 파일을 쓰고 나중에 읽을 수 있다는 것을 알고 있습니다.

Flutter를 사용하여 이와 같은 데이터를 저장하고 복원하는 방법이 있습니까? 아니면 서비스 예제 와 같이 Android 및 iOS 용 장치 별 코드를 작성해야 합니까?

답변:


118

몇 가지 옵션이 있습니다.


내가 액세스 SQLite는에 플러터 서비스를 작성, 참조 github.com/ripple182/FlutterSQLiteSample을
ripple182

Room을 사용하면 가능합니까? Room을 사용하면 iOS는 어떻게 되나요?
MNFS

1
이것은 Shared Preferences : pub.dev/packages/shared_preferences
Yster


53

나중에 참조하고 싶은 작은 값을 저장하려는 상황에있는 경우. 그런 다음 shared_preferences를 사용하여 데이터를 키-값 데이터로 저장해야합니다.

하지만 대용량 데이터를 저장하려면 SQLITE를 사용해야합니다.

그러나 언제든지 오프라인에서 사용할 수있는 firebase 데이터베이스를 사용할 수 있습니다.

로컬 스토리지에 대해 이야기하고 있으므로 항상 디스크에 파일을 읽고 쓸 수 있습니다.

기타 솔루션 :


sqflite 또는 firebase를 언제 사용할지 결정하는 방법은 무엇입니까?
stuckedoverflow

1
sqflite전화에만 저장합니다. firebase백엔드에서 쿼리를 수행 할 수있는 중앙 데이터베이스에 동기화됩니다. firebase또한 장치간에 쉽게 동기화 할 수 있습니다.
Feu

Firebase의 Firestore의 기본값은 10MB이며 1MB 이상 최대 100MB로 설정 될 수 있습니다. 순수한 오프라인 액세스는 권장되지 않습니다. 이것을 로컬 스토리지 옵션으로 만 사용할 계획이고 데이터가 큰 경우 다시 고려해야 할 수 있습니다. firebase.google.com/docs/reference/android/com/google/firebase/…
Lander

이것은 다른 시나리오에서 볼 수있는 위치를 간단히 설명하기 때문에 선호되는 대답이어야합니다.
janpeterka

12

Flutter의 공식 플러그인에서 공유 환경 설정 을 사용할 수 있습니다 . https://github.com/flutter/plugins/tree/master/packages/shared_preferences

Android 용 공유 기본 설정, iOS 용 NSUserDefaults를 사용합니다.


1
대규모 데이터베이스에 이상적입니까?
temp_

1
@temp_ iOS에 대해 잘 모릅니다. 그러나 Android의 공유 기본 설정은 대규모 데이터베이스에 적합하지 않습니다. 파일 시스템에 일반 xml 파일로 기록되고 요청시 파일 시스템에서 읽습니다. 주로 앱 기본 설정 및 유사한 항목을 저장하는 데 사용됩니다.
forgemo

이것은 Shared Preferences : pub.dev/packages/shared_preferences
Yster

7

늦은 답변이지만 나중에 여기를 방문하는 사람에게도 도움이되기를 바랍니다 😁 ..

저장할 카테고리와 각각의 최선의 방법을 제공하겠습니다.

  1. 공유 기본 설정 저장소에 간단한 값을 저장할 때 사용합니다. 예 : 색상 테마, 앱 언어, 마지막 스크롤 위치 (앱 읽기에서) .. 앱이 다시 시작될 때 유지하고 싶은 간단한 설정입니다.하지만 사용할 수 있습니다. 큰 것 (목록,지도, 이미지)을 저장 하려면 직렬화 및 역 직렬화가 필요합니다 ..이 역 직렬화 및 직렬화에 대한 자세한 내용은 여기를 참조하십시오 .
  2. 파일 이것은 로그 파일, 이미지 파일과 같이 사용자가 더 많이 정의한 데이터가 있고 csv 파일을 내보내고 싶을 때 많은 도움이됩니다. 디스크가 부족하면 스토리지 클리너가 이러한 유형의 지속성을 씻어 낼 수 있다고 들었습니다. space .. 내가 본 적이 없기 때문에 확실하지 않습니다 .. 이것은 또한 거의 모든 것을 저장할 수 있지만 직렬화 및 역 직렬화의 도움으로 ..
  3. 데이터베이스에 저장 이것은 약간 복잡한 데이터에서 매우 유용합니다. 그리고 저는 이것이 AppData (안드로이드 용)에 저장되어 있기 때문에 디스크 클리너에 의해 씻겨지지 않는다고 생각합니다 .. 여기서 데이터는 SQLite 데이터베이스에 저장됩니다. 플러그인은 SQFLite 입니다. 여기에 입력하고 싶은 데이터의 종류는 데이터베이스로 표현할 수있는 모든 것과 같습니다.

5

API 토큰이나 로그인 데이터 (비밀번호가 아님)와 같은 간단한 값만 저장해야하는 경우 다음과 같이 사용했습니다.

import 'package:shared_preferences/shared_preferences.dart';

asyncFunc() async { // Async func to handle Futures easier; or use Future.then
  SharedPreferences prefs = await SharedPreferences.getInstance();
}
...

// Set
prefs.setString('apiToken', token);

// Get
String token = prefs.getString('apiToken');

// Remove
prefs.remove('apiToken');

shared_preferencespubspec.yaml 에 종속성 을 추가 하는 것을 잊지 마십시오 (간격 형식 유지).

dependencies:

  shared_preferences: any



0

로컬 스토리지에 많은 양의 데이터를 저장하려면 sqflite 라이브러리를 사용할 수 있습니다. 설정이 매우 쉽고 개인적으로 일부 테스트 프로젝트에 사용했으며 잘 작동합니다.

https://github.com/tekartik/sqflite 튜토리얼-https: //proandroiddev.com/flutter-bookshelf-app-part-2-personal-notes-and-database-integration-a3b47a84c57

클라우드에 데이터를 저장하려면 firebase를 사용할 수 있습니다. 구글이 제공하는 탄탄한 서비스입니다.

https://firebase.google.com/docs/flutter/setup

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.