Использование sqlite в Android (java base) довольно просто. Я могу получить список данных или просто отдельные данные таким образом, используя свой пользовательский помощник базы данных.
* 1004 т.е. *:
public String getLastNetPrintUrl() {
String lastPrintUrl;
String lastId = "SELECT * FROM " + TABLE_NET_PRINT + " WHERE " + COL_NETPRINT_ID +
" = (SELECT MAX(" + COL_NETPRINT_ID + ") FROM " + TABLE_NET_PRINT + ")";
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(lastId, null);
if(cursor.moveToFirst()) {
lastPrintUrl = cursor.getString(4);
} else {
lastPrintUrl = "";
}
db.close();
return lastPrintUrl;
}
В приведенном выше фрагменте кода я просто хочу получить последний записанный URL. Тогда в деятельности, я могу просто позвонить
String netPrintUrl = dbhelper.getLastNetPrintUrl();
Как я могу достичь той же цели, используя sqflite во Flutter?
То, что я сделал до сих пор,
Future<String> getLastUrl() async {
var dbClient = await db;
String lastUrlQuery = 'SELECT * FROM device WHERE id = (SELECT MAX( id ) FROM device)';
var dbQuery = await dbClient.rawQuery(lastUrlQuery);
if (dbQuery.length > 0) {
String lastUrl = dbQuery.first.values.toString();
return lastUrl;
} else {
return '192.168.11.17:7700';
}
}
Но всякий раз, когда я пытался вызвать этот метод, точно так же, как
String lastUrl = dbhelper.getLastUrl;
Тип значения Future не может быть присвоен переменной типа 'String';
Я все еще довольно новичок во Флаттере и не могу найти никаких упоминаний о своем намерении выше. Любые советы приветствуются.
* редактировать:
Эта таблица «Device» содержит только 2 столбца, которые представляют собой целочисленный уникальный идентификатор, и url (как текст).
редактировать: конечная часть кода
final _formKey = new GlobalKey<FormState>();
final _urlController = new TextEditingController();
DatabaseHelper dbhelper = DatabaseHelper();
String atiDeviceUrl;
Future getUrl() async{
atiDeviceUrl = await dbhelper.getLastUrl();
_urlController.text = atiDeviceUrl;
print('atiDeviceUrl: $atiDeviceUrl');
}
@override
void initState() {
getUrl();
super.initState();
}