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

  

self sqflite sample =======================的更多相关文章

  1. Linux下UPnP sample分析

        一.UPnP简介   UPnP(Universal Plug and Play)技术是一种屏蔽各种数字设备的硬件和操作系统的通信协议.它是一种数字网络中间件技术,建立在TCP/IP.HTTP协 ...

  2. cocos2d-x for android配置 & 运行 Sample on Linux OS

    1.从http://www.cocos2d-x.org/download下载稳定版 比如cocos2d-x-2.2 2.解压cocos2d-x-2.2.zip,比如本文将其解压到 /opt 目录下 3 ...

  3. android studio2.2 的Find Sample Code点击没有反应

    1 . 出现的问题描述:           右键点击Find Sample Code后半天没有反应,然后提示 Samples are currently unavailable for :{**** ...

  4. jmeter(四)Sample之http请求

    启动jmeter,建立一个测试计划 这里再次说说怎么安装和启动jmeter吧,昨天下午又被人问到怎样安装和使用,我也是醉了:在我看来,百度能解决百分之八十的问题,特别是基础的问题... 安装:去官网下 ...

  5. jcaptcha sample 制作验证码

    Skip to end of metadata Created by marc antoine garrigue, last modified by Jeremy Waters on Feb 23, ...

  6. Python 对不均衡数据进行Over sample(重抽样)

    需要重采样的数据文件(Libsvm format),如heart_scale +1 1:0.708333 2:1 3:1 4:-0.320755 5:-0.105023 6:-1 7:1 8:-0.4 ...

  7. Basic linux command-with detailed sample

    Here I will list some parameters which people use very ofen, I will attach the output of the command ...

  8. 例子:RSS Reader Sample

    本例演示了Rss xml信息的获取,以及如何使用SyndicationFeed来进行符合Rss规范的xml进行解析. SyndicationFeed 解析完成后 可以得到SyndicationItem ...

  9. 例子:Background Audio Streamer Sample

    The Background Audio Streamer sample demonstrates how to create an app that uses a MediaStreamSource ...

随机推荐

  1. dynamic 类型不能访问属性

    x //解决方案ProjectTest.项目A里面public object r(){ ,name = "zf"}; } //解决方案ProjectTest.项目B里面 publi ...

  2. css_css 盒子水平居中 垂直居中

    1.盒子垂直居中---常用3种方法 方法2: 2.盒子水平居中 3.垂直水平都居中 之前学过 1.结合上面的知识 2.flex布局可以做到 3.css3  translate  定位

  3. 模块化Javascript代码的两种方式

    1.将模块整体放在函数里 function buildMonthNameModule() { var names = ["January ", "February&quo ...

  4. 三报文握手 四报文握手 TCP运输连接管理

    三报文握手 四报文握手  TCP运输连接管理

  5. STA 463 Simple Linear Regression Report

    STA 463 Simple Linear Regression ReportSpring 2019 The goal of this part of the project is to perfor ...

  6. react将字符串转义成html语句

    在使用reactjs库的时候,会遇到将一段html的字符串,然后要将它插入页面中以html的形式展现,然而直接插入的话页面显示的就是这段字符串,而不会进行转义,可以用以下方法插入,便可以html的形式 ...

  7. css 修改svg图标的颜色(不修改fill)

    给icon加样式 (利用原图标的阴影区域,同时将原图标移动超过之前父元素范围)filter: drop-shadow(red 80px 0);transform: translateX(-80px); ...

  8. php json 中文不转义 & 转义为中文

    JSON_UNESCAPED_UNICODE private function decodeUnicode($str){ return preg_replace_callback('/\\\\u([0 ...

  9. ASM

    一. 磁盘阵列 RAID 5 二. STRRPE 三. LAT 四. [root@localhost ~]# fdisk /dev/sdjDevice contains neither a valid ...

  10. 使用paginate分页后数据处理

    public function index(){ $sql = ""; $list = ""; $pagenumber = 20;//默认分页条数 //查询数据 ...