У меня есть одна страница, называемая страницей входа, на этой странице я использую метки для текстового поля и кнопки, например (Имя пользователя, Логин), я использую метку входа для кнопки входа, но я хочу эту метку из базы данных sqlflite, также яВы сохранили данные в базе данных, но я хочу получить эти данные для конкретной метки.
Вот эта форма входа Текст метки виджета - это имя пользователя, но я хочу получить его из базы данных SQL, которую я уже сохранил в базу данных. просто хочу получить по тексту метки. Здесь я попробовал код.
Код помощника базы данных
import 'dart:io';
import 'package:path_provider/path_provider.dart';
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
import 'package:tudo/src/utils/sql/sql_appconstant_model.dart';
class DbOperation {
static final DbOperation _instance = DbOperation._();
static Database _database;
DbOperation._();
factory DbOperation() {
return _instance;
}
Future<Database> get db async {
if (_database != null) {
return _database;
}
_database = await init();
return _database;
}
Future<Database> init() async {
Directory directory = await getApplicationDocumentsDirectory();
String dbPath = join(directory.path, 'database.db');
var database = openDatabase(dbPath, version: 1, onCreate: _onCreate);
return database;
}
void _onCreate(Database db, int version) {
db.execute('''
CREATE TABLE appConstant(
id INTEGER PRIMARY KEY AUTOINCREMENT,
language TEXT,
screen INTEGER,
value INTEGER,
label INTEGER)
''');
print("Database was created!");
}
Future<int> insertdata(DbAppConstant dbAppConstant) async {
var client = await db;
return client.insert('appConstant', dbAppConstant.toMapForDb(),
conflictAlgorithm: ConflictAlgorithm.replace);
}
Future<List<DbAppConstant>> fetchAll() async {
var client = await db;
var res = await client.query('appConstant');
if (res.isNotEmpty) {
var appConst = res
.map((appConstantMap) => DbAppConstant.fromDb(appConstantMap))
.toList();
return appConst;
}
return [];
}
Future deleteAll() async {
var client = await db;
client.delete('appConstant');
}
Future closeDb() async {
var client = await db;
client.close();
}
}
Виджет имени пользователя на экране входа в систему
Widget _buildUserNameField() {
return EnsureVisibleWhenFocused(
focusNode: _emailFocusNode,
child: TudoEmailWidget(
focusNode: _emailFocusNode,
prefixIcon: Icon(Icons.email),
labelText: "Username",
validator: (val) => Validators.validateEmail(val.trim()),
onSaved: (val) => _username = val.trim(),
// onChanged:(val) => _username = val.trim(),
),
);
}
Модель базы данных
import 'package:meta/meta.dart';
class DbAppConstant {
@required
final int id;
@required
final String language;
@required
final String screen;
@required
final String value;
@required
final String label;
DbAppConstant({this.id, this.language, this.screen, this.value, this.label});
DbAppConstant.random()
: this.id = null,
this.language = 'en',
this.screen = 'login_screen',
this.value = 'email',
this.label = 'Email';
DbAppConstant.fromDb(Map<String, dynamic> map)
: id = map['id'],
language = map['language'],
screen = map['screen'],
value = map['value'],
label = map['label'];
Map<String, dynamic> toMapForDb() {
var map = Map<String, dynamic>();
map['id'] = id;
map['language'] = language;
map['screen'] = screen;
map['value'] = value;
map['label'] = label;
return map;
}
}