zoukankan      html  css  js  c++  java
  • 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;
      }
    
    }
    

      

  • 相关阅读:
    TCP通信
    TCP/IP与套接字
    SPA页面性能优化
    webpack打包css样式出错
    《转》理解Object.defineProperty的作用
    vue2.0 自定义时间过滤器
    axios post提交数据格式不对的问题
    vue-cli开发时,ajax跨域详细解决办法
    关于Vue实例的生命周期created和mounted的区别
    npm install 报错(npm ERR! errno -4048,Error: EPERM: operation not permitted,)解决方法
  • 原文地址:https://www.cnblogs.com/pythonClub/p/10692595.html
Copyright © 2011-2022 走看看