Невозможно зарегистрировать модель в сервисах локатора - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь зарегистрировать модель в моём локаторе, но я получаю неопределённость, когда я добавляю параметры в модель. service_locator.dart

import 'package:get_it/get_it.dart';

import '/services/repository_service.dart';
import '/models/addcash.dart';

GetIt locator = GetIt.instance;

void setupLocator() {
  // // Register services
  locator.registerLazySingleton<RepositoryServiceAddCash>(
      () => RepositoryServiceAddCash());

  // Register models
  locator.registerFactory<AddCash>(
      () => AddCash(id, name, amount, data, frequency, isDeleted));
}

Параметры id, name, amount, data, frequency, isDeleted отображаются как неопределенные. Это файл моей модели

import 'package:scoped_model/scoped_model.dart';
import 'package:cash_on_hand/service_locator.dart';
import 'package:cash_on_hand/services/repository_service.dart';

import '../data/database.dart';

class AddCash extends Model {
  RepositoryServiceAddCash storageService = locator<RepositoryServiceAddCash>();

  int id;
  String name;
  int amount;
  String date;
  String frequency;
  bool isDeleted;

  AddCash(this.id, this.name, this.amount, this.date, this.frequency,
      this.isDeleted);

  AddCash.fromJson(Map<String, dynamic> json) {
    this.id = json[DatabaseCreator.id];
    this.name = json[DatabaseCreator.name];
    this.amount = json[DatabaseCreator.amount];
    this.date = json[DatabaseCreator.date];
    this.frequency = json[DatabaseCreator.frequency];
    this.isDeleted = json[DatabaseCreator.isDeleted] == 1;
  }
}

1 Ответ

1 голос
/ 04 ноября 2019

Вы можете изменить параметр конструктора на необязательный с помощью {}

AddCash(this.id, this.name, this.amount, this.date, this.frequency, this.isDeleted);

на

AddCash({this.id, this.name, this.amount, this.date, this.frequency, this.isDeleted});

фрагмент кода

import 'package:flutter/material.dart';
import 'package:get_it/get_it.dart';

GetIt getIt = GetIt.instance;

void main() {
  getIt.registerSingleton<Model>(AddCash(),
      signalsReady: true);

  runApp(MyApp());
}


abstract class Model extends ChangeNotifier {
  int get id;
  String get name;
  int get amount;
  String get date;
  String get frequency;
  bool get isDeleted;
}

class AddCash extends Model {
  int id;
  String name;
  int amount;
  String date;
  String frequency;
  bool isDeleted;

  AddCash({this.id, this.name, this.amount, this.date, this.frequency,
      this.isDeleted});

  /*AddCash.fromJson(Map<String, dynamic> json) {
    this.id = json[DatabaseCreator.id];
    this.name = json[DatabaseCreator.name];
    this.amount = json[DatabaseCreator.amount];
    this.date = json[DatabaseCreator.date];
    this.frequency = json[DatabaseCreator.frequency];
    this.isDeleted = json[DatabaseCreator.isDeleted] == 1;
  }*/
}
...