在CentOS系统下,Flutter实现数据持久化有多种方式,以下是一些常用的方法:
shared_preferencesshared_preferences 是一个Flutter插件,用于存储简单的键值对数据。
在终端中运行以下命令来安装 shared_preferences 插件:
flutter pub add shared_preferences
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: DataPersistenceExample(),
);
}
}
class DataPersistenceExample extends StatefulWidget {
@override
_DataPersistenceExampleState createState() => _DataPersistenceExampleState();
}
class _DataPersistenceExampleState extends State<DataPersistenceExample> {
String _data = '';
@override
void initState() {
super.initState();
_loadData();
}
void _loadData() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
_data = prefs.getString('key') ?? 'Default Value';
});
}
void _saveData() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
prefs.setString('key', _data);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Data Persistence Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
TextField(
decoration: InputDecoration(
labelText: 'Enter Data',
),
onChanged: (value) {
setState(() {
_data = value;
});
},
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _saveData,
child: Text('Save Data'),
),
SizedBox(height: 20),
Text('Data: $_data'),
],
),
),
);
}
}
sqflitesqflite 是一个Flutter插件,用于在本地存储SQLite数据库。
在终端中运行以下命令来安装 sqflite 插件:
flutter pub add sqflite
import 'package:flutter/material.dart';
import 'package:sqflite/sqflite.dart';
import 'dart:convert';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: DataPersistenceExample(),
);
}
}
class DataPersistenceExample extends StatefulWidget {
@override
_DataPersistenceExampleState createState() => _DataPersistenceExampleState();
}
class _DataPersistenceExampleState extends State<DataPersistenceExample> {
String _data = '';
@override
void initState() {
super.initState();
_loadData();
}
void _loadData() async {
final database = await openDatabase('my_database.db', version: 1);
final Map<String, dynamic> data = await database.get('data');
if (data != null) {
setState(() {
_data = data['value'] ?? 'Default Value';
});
}
await database.close();
}
void _saveData() async {
final database = await openDatabase('my_database.db', version: 1);
await database.insert(
'data',
{'value': _data},
conflictAlgorithm: ConflictAlgorithm.replace,
);
await database.close();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Data Persistence Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
TextField(
decoration: InputDecoration(
labelText: 'Enter Data',
),
onChanged: (value) {
setState(() {
_data = value;
});
},
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _saveData,
child: Text('Save Data'),
),
SizedBox(height: 20),
Text('Data: $_data'),
],
),
),
);
}
}
flutter_secure_storageflutter_secure_storage 是一个Flutter插件,用于安全地存储敏感数据,如密码、令牌等。
在终端中运行以下命令来安装 flutter_secure_storage 插件:
flutter pub add flutter_secure_storage
import 'package:flutter/material.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: DataPersistenceExample(),
);
}
}
class DataPersistenceExample extends StatefulWidget {
@override
_DataPersistenceExampleState createState() => _DataPersistenceExampleState();
}
class _DataPersistenceExampleState extends State<DataPersistenceExample> {
String _data = '';
@override
void initState() {
super.initState();
_loadData();
}
void _loadData() async {
final storage = FlutterSecureStorage();
setState(() {
_data = storage.read(key: 'key') ?? 'Default Value';
});
}
void _saveData() async {
final storage = FlutterSecureStorage();
await storage.write(key: 'key', value: _data);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Data Persistence Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
TextField(
decoration: InputDecoration(
labelText: 'Enter Data',
),
onChanged: (value) {
setState(() {
_data = value;
});
},
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _saveData,
child: Text('Save Data'),
),
SizedBox(height: 20),
Text('Data: $_data'),
],
),
),
);
}
}
以上是几种常见的Flutter数据持久化方法,你可以根据具体需求选择合适的方法。