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. python自动化打开网页

    from selenium.webdriver.firefox.options import Options as FOptionsfrom selenium.webdriver.chrome.opt ...

  2. dhtmlx Gantt实例介绍分析

    API地址:https://docs.dhtmlx.com/gantt/desktop__guides.html,这是英文的网页,可以用谷歌打开然后页面翻译,就是中文的啦! 我用的是DHTMLX Ga ...

  3. java.text.DateFormat 线程不安全问题

    java.text下的 DateFormat 是线程不安全的: 建议1: 1.使用threadLocal包装DateFormat(太复杂,不推荐) 2.使用org.apache.commons.lan ...

  4. burp抓取ios设备https数据包

    参考了网上其他相关教程,自己动手试了一次,有效的方法可确定为: 1.让PC机和移动端处于同一局域网, 2.burp设定监听所有接口,并监听一个端口 3.手机端设置代理,方式为手动,ip地址填PC在局域 ...

  5. RoR - Nested Resources, Security ,pagination

    root to: 'xxx'  默认root路径 Nested Resource: Rails.application.routes.draw do resources :books do resou ...

  6. 迪杰斯特拉(Dijkstra)算法描述及理解

    Dijkstra算法是一种计算单源最短无负边路径问题的常用算法之一,时间复杂度为O(n2) 算法描述如下:dis[v]表示s到v的距离,pre[v]为v的前驱结点,用以输出路径,vis[v]表示该点最 ...

  7. python一次性解压多层嵌套zip压缩包

    zip包里的结构不是固定的,有可能只需要解压一次就完成了,有可能解压后里面还存在zip文件,需要继续进行解压缩 写了个简单的递归函数来实现解压非固定结构zip包,若解压后的zip子目录下仍含有zip文 ...

  8. Mybatis-Plus 3.0代码生成器

    package com.kyplatform.generator; import com.baomidou.mybatisplus.core.exceptions.MybatisPlusExcepti ...

  9. 解决No converter found for return value of type: class java.util.ArrayList

    十一月 02, 2018 7:37:44 下午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() f ...

  10. div 拖拽

    html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...