Dart でsqljockyを使用して、データベースへの SQL アクセスをコーディングしようとしています。データベース Handler から返された結果を使用して何らかの計算を行いたいので、メソッドは Future を返します。
しかし、実行しようとすると、次のエラーが発生します。
Uncaught Error: The null object does not have a method 'then'`
デバッガーを実行したところ、次のエラーが発生することがわかりました。
db.query('select * from user where email="$email"').then(...)
しかし、catchError 句は起動しません。
私のハンドラーメソッドは次のとおりです。
// db is a ConnectionPool
Future<Map<String,String>> queryUser(String email){
print(email);
db.query('select * from user where email="${email}"').then((result) { // here raise the error
Map<String,String> results = new Map<String,String>();
result.forEach((row){
results['status'] = '200';
results['ID'] = row[0];
results['Image'] = row[1];
results['Name'] = row[2];
results['Email'] = row[3];
results['Password'] = row[4];
});
return results;
}).catchError((error){
Map<String,String> results = new Map<String,String>();
results['status'] = '500';
return results;
});
}
このハンドラを呼び出すメソッドは次のとおりです。
List getUser(String email) {
Future<Map<String,String>> result = dbhandler.queryUser(email);
result.then((Map<String,String> result) {
String statuscode = result['status'];
result.remove('status');
String json = JSON.encode(result);
List pair = new List();
pair.add(statuscode);
pair.add(json);
return pair;
});
phpmyadmin で直接クエリを実行すると、正しいデータが返されるので、正しいです。
誰かがそれを解決する方法についてのヒントを教えてもらえますか?