创建 model
final String tableUser='user';
final String columnId='_id';
final String columnName='name';
class User{
int id;
String name;
/***
* 将类转换为键值对
*/
Map<String,dynamic> toMap(){
var map=<String,dynamic>{
columnName:name,
};
if(id!=null){
map[columnId]=id;
}
return map;
}
User();
/***
* 将键值对转换为类
*/
User.fromMap(Map<String,dynamic> map){
id=map[columnId];
name=map[columnName];
}
}
创建SQLHelper
class DBProvider{
DBProvider._();
static final DBProvider db=DBProvider._();
Database _database;
Future<Database> get database async{
if(_database!=null){
return _database;
}
_database=await initDB();
return _database;
}
initDB() async{
Directory documentsDirectory=await getApplicationDocumentsDirectory();
String path=join(documentsDirectory.path,'UserDB.db');
return await openDatabase(path,version: 1,onOpen: (db){},onCreate: (Database db,int version)async{
await db.execute('''
create table $tableUser(
$columnId integer primary key autoincrement,
$columnName text not null)
''');
});
}
Future<User> insert(User user) async{
final db=await database;
user.id=await db.insert(tableUser, user.toMap());
return user;
}
Future<User> getUser(int id) async{
final db=await database;
List<Map> maps=await db.query(tableNew,columns: [columnId,columnName],
where: '$columnId=?',
whereArgs: [id]);
if(maps.length>0){
return User.fromMap(maps.first);
}
return null;
}
Future<List<User>> getAllUser() async{
final db=await database;
var res=await db.query("User");
List<User> list=res.isNotEmpty?res.map((c)=>User.fromMap(c)).toList():[];
return list;
}
Future<int> delete(int id) async{
final db=await database;
return await db.delete(tableUser,where: '$columnId=?',whereArgs: [id]);
}
Future<int> update(User user)async{
final db=await database;
return await db.update(tableUser, user.toMap(),where: '$columnId=?',whereArgs: [user.id]);
}
removeAll() async{
final db=await database;
db.delete(tableUser);
}
Future close() async{
final db=await database;
db.close();
}
}
界面
class _MyHomePageState extends State<MyHomePage> {
final TextEditingController textEditingController=new TextEditingController();
_saveData(){
User user=User();
user.name=textEditingController.text;
DBProvider.db.insert(user);
Navigator.of(context).push(
new MaterialPageRoute(builder: (context){
return new PageResult();
})
);
}
_removeData(){
DBProvider.db.removeAll();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
children: <Widget>[
TextField(
controller: textEditingController,
autofocus: true,
decoration: new InputDecoration(hintText: '请输入打卡姓名'),
),
RaisedButton(
child: Text('保存'),
onPressed: _saveData,
),
RaisedButton(
child: Text('清除数据'),
onPressed: _removeData,
),
],
),
),
);
}
}