|
|
|
# Package
|
|
|
|
|
|
|
|
Package can be used to organize and share a set of functions in Dart. It is simply a sharable library or modules.
|
|
|
|
Package is similar to Dart Application except that Dart Package does not have application entry point - `main`.
|
|
|
|
A minimal package consists of the following:
|
|
|
|
|
|
|
|
- `pubspec.yaml`: a metadata file that declares the package name, version, author, etc.
|
|
|
|
- `lib/`: a directory contains the public code of the package, at least one dart file.
|
|
|
|
|
|
|
|
### Instructions:
|
|
|
|
|
|
|
|
Create a Flutter package for your [Secure Notes app](../secure-notes/README.md).
|
|
|
|
You should write your own package which will work with [`sqflite`](https://pub.dev/packages/sqflite) and have CRUD functionality.
|
|
|
|
Your package should consist of `Database` class and `Note` class which will allow easy access to SQLite database.
|
|
|
|
|
|
|
|
In the end you should be able to import it like:
|
|
|
|
|
|
|
|
```dart
|
|
|
|
import 'package:note/note.dart';
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
### Objective:
|
|
|
|
|
|
|
|
- Dealing with existing, large apps
|
|
|
|
- Reusing packages across multiple apps
|
|
|
|
- Local vs remote (git) packages
|
|
|
|
|
|
|
|
### Database.dart
|
|
|
|
|
|
|
|
```dart
|
|
|
|
class Database {
|
|
|
|
Database _db;
|
|
|
|
|
|
|
|
Future create() async {
|
|
|
|
Directory path = await getApplicationDocumentsDirectory();
|
|
|
|
String dbPath = join(path.path, "database.db");
|
|
|
|
|
|
|
|
_db = await openDatabase(dbPath, version: 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
Example of Database class, where you should create table `Note` with 4 parameters:
|
|
|
|
|
|
|
|
- `id`
|
|
|
|
- `title`
|
|
|
|
- `body`
|
|
|
|
- `date`
|
|
|
|
|
|
|
|
Database class should also have CRUD methods like `getAllNotes`, `deleteAllNotes`, `addNote`, `deleteNote`, `updateNote`.
|
|
|
|
|
|
|
|
- `getAllNotes()`
|
|
|
|
- `deleteAllNotes()`
|
|
|
|
- `addNote(note: Note)`
|
|
|
|
- `deleteNote(note: Note)`
|
|
|
|
- `updateNote(oldNote: Note, newNote: Note)`
|
|
|
|
|
|
|
|
### Note.dart
|
|
|
|
|
|
|
|
Model class for Note object.
|
|
|
|
|
|
|
|
```dart
|
|
|
|
class Note {
|
|
|
|
int id;
|
|
|
|
String title;
|
|
|
|
String body;
|
|
|
|
String date;
|
|
|
|
|
|
|
|
Note({
|
|
|
|
this.id,
|
|
|
|
this.title,
|
|
|
|
this.body,
|
|
|
|
this.date;
|
|
|
|
});
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
### Notions
|
|
|
|
|
|
|
|
[Developing packages with Dart](https://flutter.dev/docs/development/packages-and-plugins/developing-packages)
|