#android #json #api #flutter #async-await
#Android #json #API #трепетание #асинхронный-ожидание
Вопрос:
Этот код имеет неустойчивый характер. В редакторе кода он не показывает никакой ошибки, но когда я запускаю код, появляется неприятное сообщение об ошибке.
import 'package:sqflite/sqflite.dart';
import 'package:path_provider/path_provider.dart';
import 'dart:io';
import 'package:path/path.dart';
import 'dart:async';
import '../models/item_model.dart';
import 'repository.dart';
class NewsDbProvider implements Source, Cache {
Database db;
NewsDbProvider() {
init();
}
Future<List<int>> fetchTopIds() {
return null;
}
void init() async {
Directory documentsDirectory = await getApplicationDocumentsDirectory();
**final path = join(documentsDirectory.path, "item5.db");**
db = await openDatabase(
path,
version: 1,
onCreate: (Database newDb, int version) {
newDb.execute("""
CREATE TABLE Items
(
id INTEGER PRIMARY KEY,
type TEXT,
by TEXT,
time INTEGER,
text TEXT,
parent INTEGER,
kids BLOB,
dead INTEGER,
deleted INTEGER,
url TEXT,
score INTEGER,
title TEXT,
descendants INREGER
)
""");
},
);
}
Future<ItemModel> fetchItem(int id) async {
final maps = await db.query(
"Items",
columns: null,
where: "id=?",
whereArgs: [id],
);
if (maps.length > 0) {
return ItemModel.fromDb(maps.first);
}
return null;
}
Future<int> addItem(ItemModel item) {
return db.insert(
"Items",
item.toMap(),
conflictAlgorithm: ConflictAlgorithm.ignore,
);
}
}
final newsDbProvider = NewsDbProvider();
Если я изменю имя item5 на что-либо другое, что я еще не использовал, код будет успешно работать.
Вот сообщение об ошибке терминала.
**E/flutter ( 6340): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: type 'int' is not a subtype of type 'bool'
E/flutter ( 6340): #0 new ItemModel.fromDb (package:news/src/models/item_model.dart:34:17)
E/flutter ( 6340): #1 NewsDbProvider.fetchItem
(package:news/src/resources/news_db_provider.dart:57:24)
E/flutter ( 6340): <asynchronous suspension>
E/flutter ( 6340): #2 Repository.fetchItem (package:news/src/resources/repository.dart:24:27)
E/flutter ( 6340): #3 StoriesBloc._itemsTransformer.<anonymous closure>
(package:news/src/blocs/stories_bloc.dart:28:33)
E/flutter ( 6340): #4 _ScanStreamSink.add (package:rxdart/src/transformers/scan.dart:13:24)
E/flutter ( 6340): #5 _SinkTransformerStreamSubscription._handleData
(dart:async/stream_transformers.dart:121:24)
E/flutter ( 6340): #6 _rootRunUnary (dart:async/zone.dart:1198:47)
E/flutter ( 6340): #7 _CustomZone.runUnary (dart:async/zone.dart:1100:19)
E/flutter ( 6340): #8 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
E/flutter ( 6340): #9 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:357:11)
E/flutter ( 6340): #10 _DelayedData.perform (dart:async/stream_impl.dart:611:14)
E/flutter ( 6340): #11 _StreamImplEvents.handleNext (dart:async/stream_impl.dart:730:11)
E/flutter ( 6340): #12 _PendingEvents.schedule.<anonymous closure>
(dart:async/stream_impl.dart:687:7)
E/flutter ( 6340): #13 _rootRun (dart:async/zone.dart:1182:47)
E/flutter ( 6340): #14 _CustomZone.run (dart:async/zone.dart:1093:19)
E/flutter ( 6340): #15 _CustomZone.runGuarded (dart:async/zone.dart:997:7)
E/flutter ( 6340): #16 _CustomZone.bindCallbackGuarded.<anonymous closure>
(dart:async/zone.dart:1037:23)
E/flutter ( 6340): #17 _rootRun (dart:async/zone.dart:1190:13)
E/flutter ( 6340): #18 _CustomZone.run (dart:async/zone.dart:1093:19)
E/flutter ( 6340): #19 _CustomZone.runGuarded (dart:async/zone.dart:997:7)
E/flutter ( 6340): #20 _CustomZone.bindCallbackGuarded.<anonymous closure>
(dart:async/zone.dart:1037:23)
E/flutter ( 6340): #21 _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
E/flutter ( 6340): #22 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)**
При просмотре такого большого сообщения об ошибке я в замешательстве. Пожалуйста, помогите.