flutter sqlite持久化数据


dependencies:
  path:
  sqflite:
  sqflite_common_ffi:
import 'dart:io';

import 'package:flutter/material.dart';
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart' as path;

Future<Database> database;
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  if (Platform.isWindows || Platform.isLinux) {
    // Initialize FFI
    sqfliteFfiInit();
    // Change the default factory
    databaseFactory = databaseFactoryFfi;
  }

  database = openDatabase(
    path.join(await getDatabasesPath(), 'test_database.db'),
    onCreate: (db, version) {
      return db.execute(
        '''
        CREATE TABLE dogs(
          id   INTEGER PRIMARY KEY AUTOINCREMENT, 
          name TEXT NOT NULL
        );
         ''',
      );
    },
    version: 1,
  );
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Home Page'),
      ),
      body: Center(
        child: Column(
          children: [
            RaisedButton(
              onPressed: () async {
                var db = await database;
                var id = await db.insert('dogs',
                    {'name': '[test name] ' + DateTime.now().toString()});
                print(id);
              },
              child: Text('插入数据'),
            ),
            RaisedButton(
              onPressed: () async {
                var db = await database;
                var dogs = await db.query('dogs');
                print(dogs);
              },
              child: Text('查看数据'),
            )
          ],
        ),
      ),
    );
  }
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM