flutter - The getter 'length' was called on null. - почему?

Подключаю БД(sqlite) к проекту Flutter При переходе на вкладку пишет:введите сюда описание изображения

Понимаю, что передает пустой параметр, но не могу понять, где именно ошибка. Все вроде указано верно, но предполагаю, что ошибка в том, что не указана База Данных, она банально не подключена. Но могу и ошибаться.

flutter: # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in # the material Icons class. uses-material-design: true assets: - lib/assets/database.sqlite - image/fire.png

import 'dart:async';
import 'dart:io';

import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
import 'package:sqflite/sqflite.dart';

import 'model.dart';

class DatabaseHelper {
  static final DatabaseHelper _instance = new DatabaseHelper.internal();

  factory DatabaseHelper() => _instance;

  final String tableRHV = "lession";
  final String columnId = "_id";
  final String title = "title";
  final String text = "text";

  static Database _db;

  Future<Database> get db async {
    if (_db != null) {
      return _db;
    }
    _db = await initDb();

    return _db;
  }

  DatabaseHelper.internal();

  initDb() async {
    Directory documentDirectory = await getApplicationDocumentsDirectory();
    String path = join(
        documentDirectory.path, "lib/assets/database.sqlite"); //home://directory/files/sqlite.db

    var ourDb = await openDatabase(path, version: 1);
    return ourDb;
  }

  //Get RHV
  Future<List> getRHV() async {
    var dbClient = await db;
    var result = await dbClient.rawQuery("SELECT * FROM $tableRHV");

    return result.toList();
  }

  Future<int> getCount() async {
    var dbClient = await db;
    return Sqflite.firstIntValue(
        await dbClient.rawQuery("SELECT COUNT(*) FROM $tableRHV"));
  }

  Future<BaseSqlite> getRhv(int id) async {
    var dbClient = await db;

    var result = await dbClient.rawQuery("SELECT * FROM $tableRHV WHERE $columnId = $id");
    if (result.length == 0) return null;
    return new BaseSqlite.fromMap(result.first);
  }

  Future close() async {
    var dbClient = await db;
    return dbClient.close();
  }


}

файл отвечающий за вывод данных: rhv.dart

import 'package:flutter/material.dart';
import 'package:flutterapp/DatabaseHelper.dart';
import 'package:flutterapp/model.dart';

List _title;

void main() async {
  var db = new DatabaseHelper();

  int count = await db.getCount();
  print("Статья: $count");

  //Get all users;
  _title = await db.getRHV();
  for (int i = 0; i < _title.length; i++) {
    BaseSqlite baseSqlite = BaseSqlite.map(_title[i]);

    print("Title: ${baseSqlite.title }, Title Id: ${baseSqlite.id}");
  }
}

class Rhv extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text("Школа Вожатых"),
        centerTitle: true,
        backgroundColor: Colors.deepOrange,
      ),
      body: new ListView.builder(
          itemCount: _title.length,
          itemBuilder: (_, int position) {
            return new Card(
              color: Colors.white,
              elevation: 2.0,
              child: new ListTile(
                leading: new CircleAvatar(
                  child:  Text("${BaseSqlite.fromMap(_title[position]).title.substring(0, 1)}"),
                ),
                title: new Text("User: ${BaseSqlite.fromMap(_title[position]).title}"),
                onTap: () => debugPrint("${BaseSqlite.fromMap(_title[position]).title}"),
              ),
            );


          }),
    );
  }
}

Прикладываю логи:введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения


Ответы (0 шт):