[Flutter] Drift를 사용하여 Flutter 데이터 지속성 달성

I. 소개

더 많은 팁과 모범 사례를 통해 Flutter 전문가가 되고 싶으신가요? 좋은 소식이 있습니다! Flutter는 0에서 1로의 기본 항목으로 전체 전략의 응용 프로그램 라인에 참여하기를 기다리고 있습니다! 이 칼럼에는 코드 샘플 및 심층 분석을 포함하여 Flutter를 배우는 데 필요한 모든 리소스가 포함되어 있습니다. 칼럼의 내용은 계속 업데이트될 예정이며 이에 따라 가격도 인상될 예정입니다. 지금 가입하고 최고의 가격을 즐기십시오! 또한 전용 토론 그룹도 있습니다. 여기를 클릭하여 토론 그룹에 참여하여 다른 Flutter 학습자와 소통하고 배울 수 있습니다. 오늘 Flutter 학습 여정을 시작하겠습니다!

Flutter 애플리케이션을 개발할 때 종종 데이터 저장 및 읽기를 처리해야 합니다. Drift는 이 문제에 대한 우아한 솔루션을 제공합니다. Drift는 sqlite 위에 구축된 Flutter 및 Dart용 반응형 지속성 라이브러리로, 유형이 안전하고 이해하기 쉬운 방식으로 데이터베이스를 조작할 수 있습니다.

이 기사에서는 Drift 설치 및 설정 방법, 데이터베이스 및 테이블 생성 방법, 데이터 삽입, 쿼리, 업데이트 및 삭제 방법을 포함하여 Drift 사용의 기본 사항을 다룹니다. 또한 데이터 일관성을 보장하기 위해 트랜잭션을 사용하는 방법도 다룰 것입니다.

이 기사를 읽고 나면 다음 지식을 습득할 수 있습니다.

  • Drift의 기본 개념과 기능 이해
  • Flutter 프로젝트에서 Drift를 설치하고 설정하는 방법을 알아보세요.
  • Drift로 데이터베이스 및 테이블을 만드는 방법 알아보기
  • Drift로 데이터를 삽입, 쿼리, 업데이트 및 삭제하는 방법 알아보기
  • 트랜잭션에 Drift를 사용하는 방법 알아보기

Xiaoyu Youth가 2023년 CSDN에 게시한 블로그입니다. 수집 스테이션의 만연한 저작권 침해로 인해 CSDN에서 이 기사가 표시되지 않으면 CSDN을 통해 저에게 연락하십시오. 지원해 주셔서 감사합니다~

여기에 이미지 설명 삽입

2. 버전 정보

시작하기 전에 개발 환경이 다음 요구 사항을 충족하는지 확인해야 합니다.

  • Flutter 버전: 3.10.0 이상
  • 다트 SDK 버전: 3.0.0 이상
  • 드리프트 버전: 2.9.0

Flutter 및 Dart SDK 버전이 위의 요구 사항을 충족하는지 확인하세요. 버전이 이러한 요구 사항보다 낮은 경우 개발 환경을 업그레이드해야 할 수 있습니다. flutter --version및 를 실행하여 dart --versionFlutter 및 Dart SDK 버전을 확인할 수 있습니다 .

3. 드리프트 소개

Drift는 sqlite 위에 구축된 Flutter 및 Dart용 반응형 지속성 라이브러리입니다. 드리프트에는 다음과 같은 기능이 있습니다.

  • 유연성: Drift를 사용하면 SQL과 Dart 모두에서 쿼리를 작성할 수 있으므로 두 언어 모두에 유창한 API를 제공합니다. 결과를 필터링 및 정렬하거나 조인을 사용하여 여러 테이블에서 쿼리를 실행할 수 있습니다. WITH 및 WINDOW 절과 같은 복잡한 SQL 기능을 사용할 수도 있습니다.
  • 풍부한 기능: Drift는 트랜잭션, 스키마 마이그레이션, 복잡한 필터 및 표현식, 일괄 업데이트 및 조인을 기본적으로 지원합니다. SQL IDE도 내장되어 있습니다!
  • 모듈성: Drift는 daos 및 sql 파일 가져오기에 대한 기본 제공 지원 덕분에 데이터베이스 코드를 단순화하는 데 도움이 됩니다.
  • 안전성: Drift는 테이블과 쿼리를 기반으로 유형이 안전한 코드를 생성합니다. 쿼리에서 실수를 하면 Drift는 컴파일 타임에 이를 찾아 유용하고 설명적인 힌트를 제공합니다.
  • 빠름: Drift를 사용하면 강력한 쿼리를 작성할 수 있지만 키-값 저장소의 성능을 따라잡을 수 있습니다. Drift는 스레딩 지원 기능이 내장된 유일한 주요 지속성 라이브러리로, 추가 노력 없이 데이터베이스 코드를 독립적으로 실행할 수 있습니다.
  • Reactive: 모든 SQL 쿼리를 자동 업데이트 스트림으로 전환합니다! 여기에는 여러 테이블에 대한 복잡한 쿼리가 포함됩니다.
  • 교차 플랫폼 지원: Drift는 Android, iOS, macOS, Windows, Linux 및 웹에서 작동합니다. 이 템플릿은 모든 플랫폼에서 작동하는 Flutter todo 앱입니다.
  • 전투 테스트 및 프로덕션 준비 완료: Drift는 안정적이며 광범위한 단위 및 통합 테스트를 거칩니다. 프로덕션 Flutter 앱을 지원합니다.

4. Drift 설치 및 설정 방법

Flutter 프로젝트에서 Drift를 사용하려면 먼저 프로젝트 종속성에 Drift를 추가해야 합니다. 파일을 열고 섹션을 pubspec.yaml찾은 dependencies후 다음 코드를 추가합니다.

dependencies:
  flutter:
    sdk: flutter

  drift: ^2.9.0

그런 다음 flutter packages get명령을 실행하여 패키지를 가져옵니다.

다음으로 데이터베이스를 정의하기 위해 Dart 파일을 생성해야 합니다. 이 파일에서 테이블과 데이터 액세스 개체(DAO)를 정의합니다.

import 'package:drift/drift.dart';

part 'my_database.g.dart';

class Tasks extends Table {
    
    
  IntColumn get id => integer().autoIncrement()();
  TextColumn get name => text().withLength(min: 1, max: 50)();
  BoolColumn get completed => boolean().withDefault(Constant(false))();
}

(tables: [Tasks])
class MyDatabase extends _$MyDatabase {
    
    
  MyDatabase(QueryExecutor e) : super(e);

  
  int get schemaVersion => 1;
}

이 예에서는 , 및 Tasks세 필드가 있는 테이블을 정의합니다 . 그런 다음 테이블을 포함하는 클래스를 정의합니다 .idnamecompletedMyDatabaseTasks

5. 기본 사용법

1. 데이터베이스 및 테이블 생성

이전 장에서는 클래스에 테이블을 MyDatabase정의 했습니다. Tasks이제 데이터베이스 인스턴스를 만들고 이 인스턴스를 사용하여 Tasks테이블을 조작해야 합니다.

먼저 하나를 만들어야 합니다 QueryExecutor. QueryExecutorDrift가 SQLite 데이터베이스와 상호 작용하는 데 사용하는 인터페이스입니다. FlutterQueryExecutorAndroid 및 iOS에서는 일반적으로 앱의 샌드박스 디렉토리에 SQLite 데이터베이스를 생성하는 를 사용합니다 .

final executor = FlutterQueryExecutor.inDatabaseFolder(
  path: 'db.sqlite',
  logStatements: true,
);

그런 다음 이를 사용하여 다음의 인스턴스를 QueryExecutor만듭니다 .MyDatabase

final db = MyDatabase(executor);

이제 테이블을 db조작하는 데 사용할 수 있습니다 Tasks.

2. 데이터 삽입, 쿼리, 업데이트 및 삭제

intoDrift에서는 데이터를 삽입하는 메서드를 사용하고 , watch또는 get메서드를 사용하여 데이터를 쿼리하고, update메서드를 사용하여 데이터를 업데이트하고, delete메서드를 사용하여 데이터를 삭제할 수 있습니다.

// 插入数据
final task = TasksCompanion(
  name: Value('Learn Drift'),
  completed: Value(false),
);
await into(tasks).insert(task);

// 查询数据
final allTasks = await select(tasks).get();

// 更新数据
final completedTask = TasksCompanion(
  id: Value(1),
  completed: Value(true),
);
await update(tasks).replace(completedTask);

// 删除数据
await delete(tasks).delete(completedTask);

이 예에서는 를 사용하여 TasksCompanion새 작업을 만든 다음 를 사용하여 into(tasks).insert(task)이 작업을 삽입합니다. 우리는 select(tasks).get()모든 작업을 수행하는 데 사용합니다. update(tasks).replace(completedTask)작업을 업데이트하는 데 사용합니다 . 우리는 delete(tasks).delete(completedTask)작업을 삭제하는 데 사용합니다.

3. 트랜잭션 사용

트랜잭션은 데이터베이스 작업에서 매우 중요한 개념입니다. 트랜잭션은 일련의 작업이 모두 성공하거나 모두 실패하도록 하여 데이터 일관성을 보장할 수 있습니다.

Drift에서는 transaction이 메서드를 사용하여 트랜잭션을 실행할 수 있습니다. 다음은 예입니다.

await db.transaction(() async {
    
    
  // 插入一个新的任务
  final task = TasksCompanion(
    name: Value('Learn Drift'),
    completed: Value(false),
  );
  await into(tasks).insert(task);

  // 更新一个任务
  final completedTask = TasksCompanion(
    id: Value(1),
    completed: Value(true),
  );
  await update(tasks).replace(completedTask);
});

하나의 트랜잭션에서 새 작업을 삽입하고 작업을 업데이트합니다. 이 두 작업 중 하나라도 실패하면 두 작업 모두 수행되지 않습니다.

6. 요약

이 기사에서는 Flutter 프로젝트에서 데이터 지속성을 위해 Drift를 사용하는 방법을 소개했습니다. Drift 설치 및 설정 방법, 데이터베이스 및 테이블 생성 방법, 데이터 삽입, 쿼리, 업데이트 및 삭제 방법, 트랜잭션 사용 방법을 배웠습니다.

이 기사가 Drift를 이해하고 사용하는 데 도움이 되기를 바랍니다. 질문이나 제안 사항이 있으면 댓글 영역에 메시지를 남겨주세요.

Xiaoyu Youth가 2023년 CSDN에 게시한 블로그입니다. 수집 스테이션의 만연한 저작권 침해로 인해 CSDN에서 이 기사가 표시되지 않으면 CSDN을 통해 저에게 연락하십시오. 지원해 주셔서 감사합니다~

다음 기사에서는 SQL 및 Dart 쿼리, 복잡한 SQL 기능, 스키마 마이그레이션, 복잡한 필터 및 표현식, 배치 업데이트 및 조인, 유형 안전 코드 생성, 성능 최적화 및 스레딩 지원을 포함한 Drift의 고급 기능에 대해 자세히 살펴보겠습니다. 반응형 프로그래밍 및 자동 업데이트 스트림. 계속 지켜봐!

Flutter에 대해 궁금하고 자세히 알아보고 싶으신가요? 그렇다면 0에서 1까지의 Flutter 기본 소개에 대한 애플리케이션 시작 가이드가 최선의 선택이 될 것입니다! 여기에서 코드 샘플 및 심층 분석을 포함한 포괄적인 Flutter 학습 리소스를 찾을 수 있습니다. Flutter로 앱을 빌드하는 방법이 궁금하십니까? 모든 대답은 우리 칼럼에 있습니다! 더 이상 주저하지 마십시오. 칼럼의 내용은 계속 업데이트되며 이에 따라 가격이 인상됩니다. 지금 가입하고 최고의 가격을 즐기십시오! 함께 Flutter의 세계를 탐험해 봅시다! 더 알고 싶으세요? Flutter Developer 101 시작하기 소책자 칼럼 가이드를 보려면 여기를 클릭하십시오 . 또한 전용 토론 그룹도 있습니다. 여기를 클릭하여 토론 그룹에 참여하여 다른 Flutter 학습자와 소통하고 배울 수 있습니다.

추천

출처blog.csdn.net/diandianxiyu/article/details/131605795