Flutter数据库与偏好设置插件sqflite_preferences的使用
Flutter数据库与偏好设置插件sqflite_preferences的使用
sqflite_preferences
是一个通过 sqflite
库来模拟 sharedpreferences
行为的方法。它提供了快速保存和检索数据的能力,并且不需要操作成为异步操作。
使用
如何使用
首先导入库:
// 导入库
import 'package:sqflite_preferences/sqflite_preferences.dart';
// 引用管理数据库的单例类
var dbHelper = DatabaseHelper.instance;
初始化数据库
initDatabase() async {
await dbHelper.initDatabase('phoneNumber', 'INTEGER');
}
设置布尔值
setBoolValue() async {
await dbHelper.setBool('flag', true);
}
获取布尔值
var boolValue;
getBoolValue() async {
boolValue = await dbHelper.getBool('flag');
}
设置整数值
setIntValue() async {
await dbHelper.setInt('number', 1);
}
获取整数值
var intValue;
getIntValue() async {
intValue = await dbHelper.getInt('number');
}
设置浮点数值
setRealValue() async {
await dbHelper.setReal('real', 1.555);
}
获取浮点数值
var realValue;
getRealValue() async {
realValue = await dbHelper.getReal('real');
}
设置Blob值
dynamic response = await get(url);
dynamic bytesFromPic = response.image.bodyBytes;
setBlobValue() async {
await dbHelper.setBlob('pic', bytesFromPic);
}
获取Blob值
var blobValue;
getBlobValue() async {
blobValue = await dbHelper.getBlob('pic');
}
// 示例:Image.memory(blobValue),
设置字符串值
setStringValue() async {
await dbHelper.setString('name', 'someone name');
}
获取字符串值
var stringValue;
getStringValue() async {
stringValue = await dbHelper.getString('name');
}
获取行数
rowCount() async {
await dbHelper.queryRowCount('name');
}
删除保存的数据
deleteValue() async {
await dbHelper.delete('name');
}
示例
以下是一个完整的示例代码,展示了如何使用 sqflite_preferences
插件来存储和获取数据。
import 'package:flutter/material.dart';
import 'package:sqflite_preferences/sqflite_preferences.dart';
var dbHelper = DatabaseHelper.instance;
var value;
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({required this.title}) : super(key: null);
final String title;
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
var textValue;
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
padding: EdgeInsets.all(50),
child: TextField(
onChanged: (value) async {
textValue = value;
await dbHelper.setString('value', textValue);
},
),
),
MaterialButton(
child: Text("Get Value"),
onPressed: () async {
value = await dbHelper.getString('value');
},
),
MaterialButton(
child: Text("Go to next page"),
onPressed: () {
Navigator.of(context).push(
MaterialPageRoute(
fullscreenDialog: true,
builder: (BuildContext ctx) {
return Page2();
}),
);
},
),
],
),
),
);
}
}
class Page2 extends StatefulWidget {
[@override](/user/override)
_Page2State createState() => _Page2State();
}
class _Page2State extends State<Page2> {
[@override](/user/override)
Widget build(BuildContext context) {
var width = MediaQuery.of(context).size.width;
return Scaffold(
appBar: AppBar(
// title: Text(widget.title),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Center(
child: Container(
padding: EdgeInsets.all(30),
width: width,
child: FittedBox(
child: Text(
"$value",
style: TextStyle(color: Colors.black, fontSize: 30),
),
),
),
),
],
),
);
}
}
更多关于Flutter数据库与偏好设置插件sqflite_preferences的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter数据库与偏好设置插件sqflite_preferences的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
sqflite_preferences
是一个结合了 sqflite
和 shared_preferences
的 Flutter 插件,允许你在 Flutter 应用中使用 SQLite 数据库来存储和读取偏好设置。它提供了一种灵活的方式来管理应用的配置和用户设置。
以下是 sqflite_preferences
的基本使用方法:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 sqflite_preferences
依赖:
dependencies:
flutter:
sdk: flutter
sqflite_preferences: ^1.0.0
然后运行 flutter pub get
来安装依赖。
2. 初始化 SqflitePreferences
在使用 sqflite_preferences
之前,你需要初始化它。通常,你可以在应用的 main
函数中进行初始化:
import 'package:flutter/material.dart';
import 'package:sqflite_preferences/sqflite_preferences.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 SqflitePreferences
await SqflitePreferences.init();
runApp(MyApp());
}
3. 使用 SqflitePreferences
初始化完成后,你可以使用 SqflitePreferences
来存储和读取偏好设置。
存储数据
你可以使用 set
方法来存储数据:
await SqflitePreferences.setInt('counter', 42);
await SqflitePreferences.setString('username', 'john_doe');
await SqflitePreferences.setBool('isDarkMode', true);
读取数据
你可以使用 get
方法来读取数据:
int counter = await SqflitePreferences.getInt('counter', defaultValue: 0);
String username = await SqflitePreferences.getString('username', defaultValue: 'guest');
bool isDarkMode = await SqflitePreferences.getBool('isDarkMode', defaultValue: false);
删除数据
你可以使用 remove
方法来删除数据:
await SqflitePreferences.remove('counter');
检查是否存在
你可以使用 containsKey
方法来检查某个键是否存在:
bool exists = await SqflitePreferences.containsKey('username');
4. 示例代码
以下是一个完整的示例,展示了如何使用 sqflite_preferences
来存储和读取用户设置:
import 'package:flutter/material.dart';
import 'package:sqflite_preferences/sqflite_preferences.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 SqflitePreferences
await SqflitePreferences.init();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'SqflitePreferences Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
[@override](/user/override)
void initState() {
super.initState();
_loadCounter();
}
Future<void> _loadCounter() async {
int counter = await SqflitePreferences.getInt('counter', defaultValue: 0);
setState(() {
_counter = counter;
});
}
Future<void> _incrementCounter() async {
setState(() {
_counter++;
});
await SqflitePreferences.setInt('counter', _counter);
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('SqflitePreferences Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}