You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.0 KiB

# 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)