self sqflite sample =======================
import 'package:path_provider/path_provider.dart';
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
import 'package:rxdart/rxdart.dart';
main() =>runApp(MaterialApp(home: MyApp(),));
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return MyAppState();
}
}
class MyAppState extends State<MyApp> {
TextEditingController _textController = TextEditingController();
Future createDB() async{
var path =(await getApplicationDocumentsDirectory()).path;
var dbPath = join(path, 'whois.db');
Database _database = await openDatabase(dbPath, version: 1, onCreate: (db, ver){
db.execute('CREATE TABLE whois (id INTEGER PRIMARY KEY, name TEXT)');
});
return _database;
}
//mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
Future addData (String table, Map<String, dynamic> sqlMap) async {
Database db = await createDB();
var a = await db.insert(table, sqlMap);
print('$a, done');
db.close();
}
Future getData (String sqlString) async {
Database db = await createDB();
var b = await db.rawQuery(sqlString);
print(b);
db.close();
}
//mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
checkString () async {
await getData('SELECT * FROM whois');
}
addString () async {
await addData('whois', {'name':'just testing'});
}
//mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('as'),),
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text('ss'),
TextField(controller: _textController,),
RaisedButton(child: Text('add'), onPressed: addString,),
RaisedButton(child: Text('get'), onPressed: checkString,),
],
),
);
}
}
flutter + bloc + sqflite demo
import 'package:path_provider/path_provider.dart';
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
import 'package:rxdart/rxdart.dart';
main() =>runApp(MaterialApp(home: MyApp(bloc: DataBloc(), db: DB(),),));
class MyApp extends StatelessWidget {
MyApp({this.bloc, this.db});
final DataBloc bloc;
final DB db;
TextEditingController _textController = TextEditingController();
add()async{
await db.addData('grant', {'name':'${_textController.text}'});
}
query() async{
List result = await db.queryData('SELECT * FROM grant');
_textController.text = result[result.length-1]['name'];
}
delete()async{
await db.deleteData('DELETE FROM grant WHERE id<4');
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('test'),),
body: StreamBuilder(
stream: bloc.dataBloc.stream,
builder: (context, snapshot){
if (snapshot.hasData){
return Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text('head'),
TextField(controller: _textController,),
RaisedButton(child: Text('add'),onPressed: add,),
RaisedButton(child: Text('query'),onPressed: query,),
RaisedButton(child: Text('delete'),onPressed: delete,),
],
);
}else{
return Center(child:
RaisedButton(
child:Text('start'),
onPressed: (){
bloc.dataBloc.add('start');
},
),
);
}
}
),
);
}
}
class DataBloc {
PublishSubject dataBloc = PublishSubject();
DataBloc(){
dataBloc.listen(onData);
}
void onData(value) {}
}
class DB {
Future getDB() async{
var path = (await getApplicationDocumentsDirectory()).path;
var dbPath = join(path, 'abc', 'whois.db');
Database _database = await openDatabase(dbPath, version: 1, onCreate: (db, ver){
db.execute('CREATE TABLE grant (id INTEGER PRIMARY KEY, name TEXT)');
});
return _database;
}
Future addData (String table, Map<String, dynamic> sqlMap) async {
Database db = await getDB();
var ret = await db.insert(table, sqlMap);
print('$ret done');
db.close();
return ret;
}
Future queryData (String sql) async{
Database db = await getDB();
var ret = await db.rawQuery(sql);
db.close();
print('$ret done');
return ret;
}
Future deleteData (String sql) async {
Database db = await getDB();
var ret = await db.rawDelete(sql);
db.close();
print('$ret done');
return ret;
}
Future updateData (String sql) async{
Database db = await getDB();
var ret = await db.rawUpdate(sql);
db.close();
print('$ret done');
return ret;
}
}
浙公网安备 33010602011771号