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;
} }
self sqflite sample =======================的更多相关文章
- Linux下UPnP sample分析
一.UPnP简介 UPnP(Universal Plug and Play)技术是一种屏蔽各种数字设备的硬件和操作系统的通信协议.它是一种数字网络中间件技术,建立在TCP/IP.HTTP协 ...
- 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 ...
- android studio2.2 的Find Sample Code点击没有反应
1 . 出现的问题描述: 右键点击Find Sample Code后半天没有反应,然后提示 Samples are currently unavailable for :{**** ...
- jmeter(四)Sample之http请求
启动jmeter,建立一个测试计划 这里再次说说怎么安装和启动jmeter吧,昨天下午又被人问到怎样安装和使用,我也是醉了:在我看来,百度能解决百分之八十的问题,特别是基础的问题... 安装:去官网下 ...
- jcaptcha sample 制作验证码
Skip to end of metadata Created by marc antoine garrigue, last modified by Jeremy Waters on Feb 23, ...
- 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 ...
- 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 ...
- 例子:RSS Reader Sample
本例演示了Rss xml信息的获取,以及如何使用SyndicationFeed来进行符合Rss规范的xml进行解析. SyndicationFeed 解析完成后 可以得到SyndicationItem ...
- 例子:Background Audio Streamer Sample
The Background Audio Streamer sample demonstrates how to create an app that uses a MediaStreamSource ...
随机推荐
- 逆向工程-真码保存在系统文件破解QQ游戏对对碰助手
1)注册栏中输入任意值测试 1.2)记录弹出的关键字对话框 2.1)发送至PEID进行查壳 2.2)发现无壳 2.3)将软件载入OllyDBG程序 2.4)在反汇编栏下右键选择中文搜索引擎->智 ...
- css3的动画
一.CSS3变形 CSS3变形是一些效果的集合 如平移.旋转.缩放.倾斜效果 每个效果都可以称为变形(transform),它们可以分别操控元素发生平移.旋转.缩放.倾斜等变化 二.CSS3位移:tr ...
- spring自动注入是单例还是多例?单例如何注入多例?
单例和多例的区别 : 单例多例需要搞明白这些问题: 1. 什么是单例多例: 2. 如何产生单例多例: 3. 为什么要用单例多例 4. 什么时候用单例, ...
- [03-01]JDBC基础
JDBC是什么? 1.java Database Connectivity:java访问数据库的解决方案: 2.用相同的方式访问不同的数据库,以实现与具体数据库无关的java操作界面: 3.JDBC定 ...
- synchronized和Lock复习
刚学编程的时候,不懂得同步的概念,只认为程序按照自己写的顺序执行, 直到学到多线程,但当时理解同步问题,也只是面对临界资源需要加锁去控制, 解决一些,如生产消费的问题.但当时一直没考虑过,多线程的情况 ...
- Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0
原因:JDK版本不兼容.运行的Java Class文件采用高版本的JDK编译,然后在低版本的JRE环境中运行,有时会报此错误. 解决:1)升级JDK 2)调整Eclipse中Java Compiler ...
- linux netcat 命令详解
功能说明:强大的网络工具语 法:nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p< ...
- 【托业】【怪兽】TEST02
★ overturn v.推翻 ★ disciplinary adj.纪律的; 训练的; 惩罚的; ★disciplined 有纪律的 ★discipline v.纪律 ★outlook 态度 ★pe ...
- 解决git冲突造成的Please move or remove them before you can merge
git clean -d -fx “” 其中x —–删除忽略文件已经对git来说不识别的文件d —–删除未被添加到git的路径中的文件f —–强制运行如果你确定这货已经没用了,并且git status ...
- 关于微信跳转,这里有你想知道的一切weixin://dl/business/?ticket=td9cd0bf056c561fe9f56e33c61df61bf
纠结了了很久,还是放出来部分接口,相信能够看到这篇文章的人也基本都是需求比较强烈的. 京东: https://wq.jd.com/mjgj/link/GetOpenLink?rurl=http%3a% ...