Это мой первый проект 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'),
),
],
),
));
}
}