flutter_data 0.5.0-dev.1 copy "flutter_data: ^0.5.0-dev.1" to clipboard
flutter_data: ^0.5.0-dev.1 copied to clipboard

outdated

The seamless way to work with persistent data models in Flutter. Inspired by Ember Data and ActiveRecord.

example/lib/main.dart

import 'dart:io';
import 'package:flutter_data/flutter_data.dart';
import 'package:get_it/get_it.dart';

import 'main.data.dart';
import 'models/comment.dart';
import 'models/post.dart';
import 'models/user.dart';

// NOTE: FOR AN UPDATED AND COMPLETE FLUTTER EXAMPLE FOLLOW
// https://github.com/flutterdata/flutter_data_todos

void main() async {
  Directory _dir;
  // final owner = ProviderStateOwner(
  //   overrides: [
  //     configureRepositoryLocalStorage(
  //         baseDirFn: () => _dir.path, encryptionKey: _encryptionKey),
  //   ],
  // );

  try {
    _dir = await Directory('tmp').create();
    await _dir.delete(recursive: true);

    GetIt.instance.registerRepositories(
        baseDirFn: () => _dir.path, encryptionKey: _encryptionKey);
    await GetIt.instance.allReady();

    final usersRepo = GetIt.instance.get<Repository<User>>();
    final postsRepo = GetIt.instance.get<Repository<Post>>();
    final commentsRepo = GetIt.instance.get<Repository<Comment>>();

    // await owner.ref.read(repositoryInitializerProvider());

    // final usersRepo = userRepositoryProvider.readOwner(owner);
    // final postsRepo = postRepositoryProvider.readOwner(owner);
    // final commentsRepo = commentRepositoryProvider.readOwner(owner);

    try {
      await usersRepo.findOne('2314444');
    } on DataException catch (e) {
      if (e.statusCode == HttpStatus.notFound) {
        print('not found');
      }
    }

    final user2 = User(id: 1, name: 'new name', email: 'new@fasd.io').init();
    // .init(owner);
    await user2.save();

    var p3 = Post(
            id: 102,
            title: 'new name',
            body: '3@fasd.io',
            user: user2.asBelongsTo,
            comments: {Comment(id: 1, body: 'bla')}.asHasMany)
        .init();
    // .init(owner);

    assert(p3.body == '3@fasd.io');
    assert(p3.user.value.email == user2.email);

    final post = await postsRepo.findOne(1, params: {'_embed': 'comments'});
    final comments = await commentsRepo.findAll(params: {'postId': 1});

    assert(comments
        .map((c) => c.id)
        .toSet()
        .difference(post.comments.map((c) => c.id).toSet())
        .isEmpty);

    assert(user2.name == p3.user.value.name);
    assert(comments.first.post.value == post);

    print(comments.map((c) => c.body).toList());
  } catch (err, stack) {
    print(err);
    print(stack);
  } finally {
    await _dir.delete(recursive: true);
  }
}

const List<int> _encryptionKey = [
  146,
  54,
  40,
  58,
  46,
  90,
  152,
  02,
  193,
  210,
  220,
  199,
  16,
  96,
  107,
  4,
  243,
  133,
  171,
  31,
  241,
  26,
  149,
  53,
  172,
  36,
  121,
  103,
  17,
  155,
  120,
  61
];
360
likes
0
pub points
83%
popularity

Publisher

verified publisherflutterdata.dev

The seamless way to work with persistent data models in Flutter. Inspired by Ember Data and ActiveRecord.

Repository (GitHub)
View/report issues

Documentation

Documentation

License

unknown (license)

Dependencies

analyzer, async, build, build_resolvers, data_state, glob, hive, http, inflection2, meta, path, pubspec_parse, riverpod, source_gen, state_notifier, uuid

More

Packages that depend on flutter_data