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; } }