Flutter模拟数据生成插件geiger_dummy_data的使用
Flutter模拟数据生成插件geiger_dummy_data的使用
作者
- Nosa Daniel Ahanor @FHNW
GEIGER DUMMY DATA
这个仓库包含了一些类,这些类提供了方法来轻松地从Geiger Indicator文档中提供的节点路径获取和设置数据。
特性
- 可以接收特定节点值路径的json对象形式的数据。
- 提供序列化和反序列化的功能。
- 可以根据在Geiger Indicator文档中定义的节点路径设置数据。
- 自动生成userId、deviceId、threatId、recommendationId、roleId等的uuid。
- 提供数据模型访问。
开始使用
在终端中运行以下命令,将该包添加到你的pubspec.yaml
文件中:
flutter pub add geiger_dummy_data
对于Flutter用户额外的信息
还需要在终端中运行以下命令,将该包添加到你的pubspec.yaml
文件中:
flutter pub add sqlite3_flutter_libs
flutter pub add sqflite
使用说明
这是一个简短且有用的示例,供用户参考。更多详细信息请查看/example
文件夹。
import "package:geiger_dummy_data/geiger_dummy_data.dart";
import 'package:geiger_localstorage/geiger_localstorage.dart';
//仅限flutter用户:取消注释以下导入行
// import 'package:path/path.dart';
// import 'package:sqflite/sqflite.dart';
void main() {
//仅限flutter用户
//初始化数据库
void _iniDatabase() async {
String dbPath = join(await getDatabasesPath(), 'database.db');
StorageController _storageController = GenericController('Example', SqliteMapper(dbPath));
}
//dart用户
//初始化数据库
StorageController _storageController =
GenericController("Example", SqliteMapper("./database.db"));
//从:Global:threats获取威胁信息
GeigerThreat _geigerThreat = GeigerThreat(_storageController);
//存储和检索来自:Global:threats的威胁信息
//返回一个包含threatId和名称的Threat对象列表
List<Threat> getThreatInfo() {
try {
return _geigerThreat.getThreats;
} catch (e) {
//威胁Json格式 '[{"threatId": "t1", "name":"phishing"},{"threatId":"t2","name":"malware"}]'
//Threat将您的json转换为Threat对象
// threatId是可选的:自动生成。
List<Threat> threatData =
Threat.convertFromJson('[{"name":"phishing"},{"name":"malware"}]');
//存储威胁到:Global:threats:
_geigerThreat.setGlobalThreatsNode = threatData;
return _geigerThreat.getThreats;
}
}
// 在终端显示
print(getThreatInfo());
}
检查test/geiger_dummy_data_test
文件夹获得更多演示。
待办事项
- 提供更多的功能来设置数据并遵循以下节点路径:
- :EnterPrise:users
- :Global:profile
- :Local:plugin
- :Users:userId:data:metrics
- :Device:deviceId:data:metrics
- 提供更多的数据模型
- 文档
此项目欢迎贡献和改进
示例代码
import 'package:geiger_api/geiger_api.dart';
import 'package:geiger_localstorage/geiger_localstorage.dart';
void main() async {
final GeigerApi? localDummyData =
await getGeigerApi('', 'dummyData', Declaration.doNotShareData);
//SimpleEventListner masterListener;
await StorageMapper.initDatabaseExpander();
final StorageController? _masterController = localDummyData!.getStorage();
//Make sure we start off with a fresh DB
await _masterController!.zap();
Future<void> setGlobalThreatsNode() async {
List<String> threats = ["phishing", "malware"];
List<String> threatid = ["t1", "t2"];
try {
for (int i = 0; i < threats.length; i++) {
Node _node =
await _masterController.get(':Global:threats:${threatid[i]}');
//创建一个NodeValue
NodeValue threatNodeValueName = NodeValueImpl("name", threats[i]);
await _node.addOrUpdateValue(threatNodeValueName);
await _masterController.update(_node);
}
} on StorageException {
//log(":Global:threats not found");
Node threatsNode = NodeImpl(":Global:threats", "nosa");
await _masterController.addOrUpdate(threatsNode);
for (int i = 0; i < threats.length; i++) {
Node threatIdNode = NodeImpl(":Global:threats:${threatid[i]}", "nosa");
//创建:Global:threats:$threatId
await _masterController.addOrUpdate(threatIdNode);
//创建一个NodeValue
NodeValue threatNodeValueName = NodeValueImpl("name", threats[i]);
await threatIdNode.addOrUpdateValue(threatNodeValueName);
await _masterController.update(threatIdNode);
}
}
}
Future<List<String>> getThreats({String language: "en"}) async {
List<String> t = [];
try {
Node _node = await _masterController.get(":Global:threats");
//return _node!.getChildNodesCsv();
for (String threatId
in await _node.getChildNodesCsv().then((value) => value.split(','))) {
Node threatNode =
await _masterController.get(":Global:threats:$threatId");
t.add(await threatNode
.getValue("name")
.then((value) => value!.getValue(language)!));
}
} on StorageException {
rethrow;
}
return t;
}
Future<List<String>> getListThreat() async {
await setGlobalThreatsNode();
return await getThreats();
}
print("Global Threats: ${await getListThreat()}");
}
更多关于Flutter模拟数据生成插件geiger_dummy_data的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter模拟数据生成插件geiger_dummy_data的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
geiger_dummy_data
是一个用于 Flutter 的插件,可以帮助开发者生成模拟数据。这对于开发和测试应用程序非常有用,尤其是在没有真实数据源的情况下。以下是如何使用 geiger_dummy_data
插件的步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 geiger_dummy_data
插件的依赖:
dependencies:
flutter:
sdk: flutter
geiger_dummy_data: ^0.0.1 # 请检查最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 geiger_dummy_data
插件:
import 'package:geiger_dummy_data/geiger_dummy_data.dart';
3. 生成模拟数据
geiger_dummy_data
提供了多种方法来生成不同类型的模拟数据。以下是一些常见的用法示例:
生成随机姓名
String randomName = DummyData.name();
print(randomName); // 输出例如 "John Doe"
生成随机地址
String randomAddress = DummyData.address();
print(randomAddress); // 输出例如 "123 Main St, Springfield, IL"
生成随机电子邮件
String randomEmail = DummyData.email();
print(randomEmail); // 输出例如 "john.doe@example.com"
生成随机电话号码
String randomPhone = DummyData.phoneNumber();
print(randomPhone); // 输出例如 "+1-555-123-4567"
生成随机日期
DateTime randomDate = DummyData.dateTime();
print(randomDate); // 输出例如 "2023-10-05 14:30:00.000"
生成随机文本
String randomText = DummyData.loremIpsum(words: 10);
print(randomText); // 输出例如 "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
4. 自定义数据生成
geiger_dummy_data
还允许你自定义数据生成的方式。例如,你可以通过传递参数来生成特定范围内的数字或特定格式的日期。
生成特定范围内的数字
int randomNumber = DummyData.number(min: 1, max: 100);
print(randomNumber); // 输出例如 42
生成特定格式的日期
DateTime specificDate = DummyData.dateTime(year: 2023, month: 12, day: 25);
print(specificDate); // 输出例如 "2023-12-25 00:00:00.000"
5. 使用生成的模拟数据
生成的模拟数据可以直接用于你的应用程序中,例如填充 UI 控件、模拟 API 响应或进行单元测试。
class UserProfile {
final String name;
final String email;
final String phone;
UserProfile({required this.name, required this.email, required this.phone});
}
void main() {
UserProfile dummyUser = UserProfile(
name: DummyData.name(),
email: DummyData.email(),
phone: DummyData.phoneNumber(),
);
print('Name: ${dummyUser.name}');
print('Email: ${dummyUser.email}');
print('Phone: ${dummyUser.phone}');
}