我是SQLite
和flutter
的新朋友。我正在尝试访问SQLite
数据库(位于我的计算机上'~/Work/FlutterTest/ProjectTestFlutter/poa.db'
的项目文件夹中。
但是当我尝试null
到cast
到List
时,我有了String
。
有我的代码:
class _DbPageState extends State<DbPage> {
String data;
var databasesPath;
String path;
Database database;
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: Container(
child: Row(
children: <Widget>[
new IconButton(
onPressed: () {
data = getRecords().toString();
},
icon: Icon(Icons.more_vert)),
new Text(
data,
)
],
),
));
}
Future<void> openDb() async {
var databasesPath = await getDatabasesPath();
String path = join(databasesPath, '~/Work/FlutterTest/ProjectTestFlutter/poa.db');
database = await openDatabase(path, version: 1);
}
Future<List<Map>> getRecords() async {
List<Map> list = await database.rawQuery('SELECT * FROM tbl1');
return list;
}
Future<void> closeDb() async {
await database.close();
}
}
答案 0 :(得分:1)
例如,当应用启动时,将数据库复制到您的设备。
ByteData data = await rootBundle.load("assets/poa.db");
List<int> bytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
var databasesPath = await getDatabasesPath();
String dbPath = join(databasesPath, "poa.db");
await File(dbPath).writeAsBytes(bytes);
请记住,将db文件添加到pubspec.yml中,就像处理图像资源一样。 之后,您可以使用以下命令从小部件中打开它:
var databasesPath = await getDatabasesPath();
String dbPath = join(databasesPath, "poa.db");
var database = await openDatabase(dbPath, version: 1);