SQL база данных не подключается во Flutter - PullRequest
0 голосов
/ 08 мая 2020

Это мой первый проект flutter по созданию автономного словаря, и у меня возникают проблемы с добавлением элементов, создающих список «избранного» и отображаемых на новой странице. У меня тоже есть отдельная страница "истории", там у меня такая же проблема.

У меня есть любимая кнопка на странице определения, и я хочу отслеживать элементы, на которые щелкнул пользователь, в виде другого списка и отображать их на странице истории. Ниже я привел историю и коды любимых классов. Это ошибки.

ошибка: метод insertthisData не определен для класса Hisdata. (undefined_method в [test2] lib \ main.dart: 583)

ошибка: метод insertfavData не определен для класса Favdata. (undefined_method в [test2] lib \ main.dart: 574)

ошибка: неопределенный класс Hisdata. (undefined_class в [test2] lib \ databhis.dart: 23)

ошибка: функция «Hisdata» не определена. (undefined_function в [test2] lib \ databhis.dart: 83)

Обратите внимание, что я не указал полный код main.dart. Приведены класс страницы истории и только те места, которые я называю избранными и страницами истории.

Буду признателен, если кто-нибудь сможет решить эту проблему.

define.dart

class Favdata {
  final int idd;
  final String id;
  final String des;

  Favdata({this.idd, this.id, this.des});

  Map<String, dynamic> toMap() {
    return {
      'idd': idd,
      'id': id,
      'des': des,
    };
  }


  @override
  String toString() {
    return 'Favdata{idd: $idd, id: $id, des: $des}';
  }
}

class Hisdata {
  final int idd;
  final String id;
  final String des;

  Hisdata({this.idd, this.id, this.des});

  Map<String, dynamic> toMap() {
    return {
      'idd': idd,
      'id': id,
      'des': des,
    };
  }

  // Implement toString to make it easier to see information about
  @override
  String toString() {
    return 'Hisdata{idd: $idd, id: $id, des: $des}';
  }
}


databhis.dart

import 'dart:async';
import "./define.dart";
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';

void main() async {
  final database = openDatabase(
    // Set the path to the database. Note: Using the `join` function from the
    // `path` package is best practice to ensure the path is correctly
    // constructed for each platform.
    join(await getDatabasesPath(), 'hisdata.db'),
    // When the database is first created, create a table to store dogs.
    onCreate: (db, version) {
      return db.execute(
        "CREATE TABLE hisdata(idd INTEGER PRIMARY KEY, id TEXT, des TEXT)",
      );
    },
    // Set the version. This executes the onCreate function and provides a
    // path to perform database upgrades and downgrades.
    version: 1,
  );

  Future<void> inserthisData(Hisdata his) async {
    // Get a reference to the database.
    final Database db = await database;

    await db.insert(
      'hisdata',
      his.toMap(),
      conflictAlgorithm: ConflictAlgorithm.replace,
    );
  }

  Future<List<Hisdata>> his() async {
    // Get a reference to the database.
    final Database db = await database;

    final List<Map<String, dynamic>> maps = await db.query('hisdata');

    return List.generate(maps.length, (i) {
      return Hisdata(
        idd: maps[i]['idd'],
        id: maps[i]['id'],
        des: maps[i]['des'],
      );
    });
  }

  Future<void> updatehis(Hisdata his) async {
    // Get a reference to the database.
    final db = await database;

    await db.update(
      'hisdata',
      his.toMap(),
      where: "id = ?",
      whereArgs: [his.id],
    );
  }

  Future<void> deletehis(int id) async {
    // Get a reference to the database.
    final db = await database;

    await db.delete(
      'hisdata',
      where: "id = ?",
      whereArgs: [id],
    );
  }

  var fido = Hisdata(
    idd: 0,
    id: 'mjhg',
    des: 'Fidoo',
  );

  await inserthisData(fido);

  print(await his());

  fido = Hisdata(
    idd: fido.idd,
    id: fido.id,
    des: fido.des,
  );
  await updatehis(fido);

  // Print Fido's updated information.
  print(await his());

  // Delete Fido from the database.
  await deletehis(fido.idd);

  print(await his());
}

databfav.dart

import "./define.dart";
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';

void main() async {
  final database = openDatabase(
    // Set the path to the database. Note: Using the `join` function from the
    // `path` package is best practice to ensure the path is correctly
    // constructed for each platform.
    join(await getDatabasesPath(), 'favdata.db'),
    onCreate: (db, version) {
      return db.execute(
        "CREATE TABLE favdata(idd INTEGER PRIMARY KEY, id TEXT, des TEXT)",
      );
    },
    // Set the version. This executes the onCreate function and provides a
    // path to perform database upgrades and downgrades.
    version: 1,
  );

  Future<void> insertfavData(Favdata fav) async {
    // Get a reference to the database.
    final Database db = await database;

    await db.insert(
      'favdata',
      fav.toMap(),
      conflictAlgorithm: ConflictAlgorithm.replace,
    );
  }

  Future<List<Favdata>> fav() async {
    // Get a reference to the database.
    final Database db = await database;

    final List<Map<String, dynamic>> maps = await db.query('favdata');

    // Convert the List<Map<String, dynamic> into a List<Dog>.
    return List.generate(maps.length, (i) {
      return Favdata(
        idd: maps[i]['idd'],
        id: maps[i]['id'],
        des: maps[i]['des'],
      );
    });
  }

  Future<void> updatefav(Favdata fav) async {
    // Get a reference to the database.
    final db = await database;

    await db.update(
      'favdata',
      fav.toMap(),
      // Ensure that the Dog has a matching id.
      where: "id = ?",
      whereArgs: [fav.id],
    );
  }

  Future<void> deletefav(int id) async {
    // Get a reference to the database.
    final db = await database;

    await db.delete(
      'favdata',
      where: "id = ?",
      whereArgs: [id],
    );
  }

  var fido = Favdata(
    idd: 0,
    id: 'mhg',
    des: 'Fido',
  );

  await insertfavData(fido);

  print(await fav());

  // Update Fido's age and save it to the database.
  fido = Favdata(
    idd: fido.idd,
    id: fido.id,
    des: fido.des,
  );
  await updatefav(fido);

  // Print Fido's updated information.
  print(await fav());

  // Delete Fido from the database.
  await deletefav(fido.idd);

  print(await fav());
}

main.dart

void callerfav() async {
  //create task

  //insert
  await Favdata.insertfavData(fav);
}

//}

void callerhis() async {
  //create task

  //insert
  await Hisdata.inserthisData(his);
}


class FavPage extends StatefulWidget {
  @override
  _FavPageState createState() => _FavPageState();
}

class _FavPageState extends State<FavPage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: ListView.builder(
      itemCount: fav.length,
      //itemCount: 23,

      itemBuilder: (BuildContext context, int i) => Column(
        children: <Widget>[
          //Card(child: ListTile(title: Text(data[i], style: TextStyle(fontWeight: FontWeight.bold,fontSize: 18.0)))),

          Card(
            child: new RaisedButton(
              color: Colors.white,
              child: ListTile(
                title: Text(fav[i],
                    style:
                        TextStyle(fontWeight: FontWeight.bold, fontSize: 18.0)
                    //Card(child: new RaisedButton(color: Colors.white,    child: ListTile(title: Text(data[i], style: TextStyle(fontWeight: FontWeight.bold,fontSize: 18.0)

                    ),
              ),
              onPressed: () {
                int indexf = data.indexOf(fav[i]);
                his.add(fav[i]);
                Navigator.push(
                  context,
                  new MaterialPageRoute(
                      builder: (context) => new SecondScreen(indexf)
                      //new MaterialPageRoute(builder: (context) => new SecondScreen(i)
                      ),
                );
              },
            ),
            //child: new RaisedButton(
            //child: new Text('Launch to new screen'),
          ),
        ],
      ),
    ));
  }
}



Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...