Flutter生成韩国假数据插件faker_korean的使用
Flutter生成韩国假数据插件faker_korean的使用
Faker Korean 是什么(英文)
Faker Korean 是其他 Faker 类库(如 PHP Faker 和 Python Faker)的灵感来源。
Faker 是一个用于生成测试或虚拟数据的工具。然而,并非所有这些数据都适合韩国使用。因此,我创建了这个包以满足您的需求。
我们尝试将非韩语数据(如地址、姓名、电话号码、银行和Lorem Ipsum)本地化。
如果您有额外的意见或发现任何问题,请在 Issue 部分提出。
Faker Korean 是什么(韩文)
Faker Korean 是一个类似于其他 Faker 类库的虚拟数据生成器。
但是,由于个人需求和政策原因,我们需要创建一个专门针对韩国用户的虚拟数据生成器。我们努力将非韩语数据(如地址、姓名、电话号码、银行和Lorem Ipsum)本地化。
如果您有额外的意见或发现任何问题,请在 Issue 部分提出。
简单使用
// 创建简单的实例
final FakerK faker = FakerK();
// 或者通过种子创建实例以固定随机值
final Faker fakerWSeed = FakerK(seed: 777);
// 轻松生成字符串虚拟数据
String name = faker.names.familyName;
print(name); // '홍'
// 或者通过选项生成字符串虚拟数据
String fullName = faker.names.fullNames(separatorString: ' '); // 分隔符为空格
print(fullName); // '홍 길동'
// 您还可以获取韩国银行的Logo图像。
// 注意:这需要使用异步方法来解析 .svg 图像为 MemoryImage
ImageProvider logoImage = await faker.bank.bankImage;
// 例如:与 Widget 结合使用
Image(image: logoImage),
支持的方法
地址
方法名 | 参数 | 返回类型 | 示例 |
---|---|---|---|
fullAddress | Getter | String | address.fullAddress |
siAddress | Getter | String | address.siAddress |
sidoguAddress | Getter | String | address.sidoguAddress |
roadAddress | Getter | String | address.roadAddress |
detailAddress | Getter | String | address.detailAddress |
postalCode | Getter | String | address.postalCode |
银行
方法名 | 参数 | 返回类型 | 示例 |
---|---|---|---|
account | digits(int?) | String | bank.account(digits: 12) |
bankName | Getter | String | bank.bankName |
bankImage | size(double=24) | Future<ImageProvider> | await bank.bankImage(size: 30) |
bankAll | size(double=24) | Future<BankModel> | await bank.bankAll(size: 30) |
BankModel
字段名 | 类型 | 描述 | 示例 |
---|---|---|---|
bankCode | String | 银行代码 | ‘001’ // 国家指定银行代码 |
bankName | String | 银行名称 | ‘国民银行’ |
bankImage | ImageProvider | 银行Logo图像 | MemoryImage |
account | String | 账号 | ‘12345678901234’ |
图像
方法名 | 参数 | 返回类型 | 示例 |
---|---|---|---|
imageUrl | width(int), height(int), random(int?), seed(String?), imageFormat(ImageFormat?) | String | images.imageUrl(width: 300, height: 300, seed: ‘abc’) |
imagesUrl | length(int?), width(int), height(int), seed(String?), imageFormat(ImageFormat?) | List<String> | images.imagesUrl(3, width: 300, height: 300, seed: ‘abc’) |
image | width(int), height(int), random(int?), seed(String?), imageFormat(ImageFormat?) | ImageProvider | images.image(width: 300, height: 300, seed: ‘abc’) |
images | length(int?), width(int), height(int), seed(String?), imageFormat(ImageFormat?) | List<ImageProvider> | images.images(3, width: 300, height: 300, seed: ‘abc’) |
ImageFormat
enum ImageFormat { jpg, webp }
互联网
方法名 | 参数 | 返回类型 | 示例 |
---|---|---|---|
id | Getter | String | internet.id |
Getter | String | internet.email | |
disposableEmail | Getter | String | internet.disposableEmail |
pw | Getter | String | internet.pw |
url | Getter | String | internet.url |
uri | Getter | Uri | internet.uri |
macAddress | Getter | String | internet.macAddress |
Lorem Ipsum
方法名 | 参数 | 返回类型 | 示例 |
---|---|---|---|
word | maxLen(int), minLen(int) | String | lipsum.word(maxLen: 7, minLen: 5) |
sentence | wordCount(int) | String | lipsum.sentence(wordCount: 5) |
paragraph | sentenceCount(int) | String | lipsum.paragraph(sentenceCount: 5) |
姓名
方法名 | 参数 | 返回类型 | 示例 |
---|---|---|---|
fullName | separatorString(String) | String | names.fullName(separatorString = ‘-’) |
lastName | Getter | String | names.lastName |
familyName | Getter | String | names.familyName |
电话
方法名 | 参数 | 返回类型 | 示例 |
---|---|---|---|
telNumber | separator(String) | String | phone.telNumber(separator = ‘-’) |
phoneNumber | separator(String) | String | phone.phoneNumber(separator = ‘-’) |
待办事项
这个包将会根据计划进行支持。
地址
- 一个链接到韩国政府公共数据门户使用的地址的方法
完整示例
import 'package:faker_korean/faker_korean.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'FakerK Example',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
static const String noData = 'No Data';
String? name;
String? address;
BankModel? bank;
String? tel;
String? phone;
String? word;
String? sentence;
String? paragraph;
String? id;
String? email;
String? pw;
String? url;
String? uri;
String? macAddress;
List<ImageProvider>? imageList;
final FakerK faker = FakerK();
int imageLength = 3;
void clearAllVariables() {
name = null;
address = null;
bank = null;
tel = null;
phone = null;
word = null;
sentence = null;
paragraph = null;
id = null;
email = null;
pw = null;
url = null;
uri = null;
macAddress = null;
imageList = null;
setState(() {});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('FakerK'),
),
body: SingleChildScrollView(
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
BuildSection(
onPressed: () {
name = faker.names.fullName();
setState(() {});
},
showWidget: Text(name ?? noData),
whatMake: 'Names',
),
BuildSection(
showWidget: Text(address ?? noData),
whatMake: 'FullAddress',
onPressed: () {
address = faker.address.fullAddress;
setState(() {});
},
),
BuildSection(
showWidget: bank != null
? Column(
children: [
Image(image: bank!.bankImage),
Text(bank!.bankName),
Text(bank!.bankCode),
Text(bank!.account),
],
)
: const Text(noData),
whatMake: 'Bank',
onPressed: () async {
bank = await faker.bank.bankAll(size: 100);
setState(() {});
},
),
BuildSection(
showWidget: Text(tel ?? noData),
whatMake: 'Tel',
onPressed: () {
tel = faker.phone.telNumber();
setState(() {});
},
),
BuildSection(
showWidget: Text(phone ?? noData),
whatMake: 'Phone',
onPressed: () {
phone = faker.phone.phoneNumber();
setState(() {});
},
),
BuildSection(
showWidget: Text(word ?? noData),
whatMake: 'Word',
onPressed: () {
word = faker.lipsum.word();
setState(() {});
},
),
BuildSection(
showWidget: Text(sentence ?? noData),
whatMake: 'Sentence',
onPressed: () {
sentence = faker.lipsum.sentence();
setState(() {});
},
),
BuildSection(
showWidget: Text(paragraph ?? noData),
whatMake: 'Paragraph',
onPressed: () {
paragraph = faker.lipsum.paragraph();
setState(() {});
},
),
BuildSection(
showWidget: Text(id ?? noData),
whatMake: 'Id',
onPressed: () {
id = faker.internet.id;
setState(() {});
},
),
BuildSection(
showWidget: Text(pw ?? noData),
whatMake: 'Pw',
onPressed: () {
pw = faker.internet.pw;
setState(() {});
},
),
BuildSection(
showWidget: Text(url ?? noData),
whatMake: 'Url',
onPressed: () {
url = faker.internet.url;
setState(() {});
},
),
BuildSection(
showWidget: Text(uri ?? noData),
whatMake: 'Uri',
onPressed: () {
uri = faker.internet.uri.toString();
setState(() {});
},
),
BuildSection(
showWidget: Text(macAddress ?? noData),
whatMake: 'MacAddress',
onPressed: () {
macAddress = faker.internet.macAddress;
setState(() {});
},
),
BuildSection(
showWidget: imageList != null && imageList!.isNotEmpty
? ListView.builder(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
padding: EdgeInsets.zero,
itemCount: imageLength,
itemBuilder: (context, index) => Image(
image: imageList![index],
loadingBuilder: (context, child, loadingProgress) {
if (loadingProgress == null) return child;
return Center(
child: CircularProgressIndicator(
value: loadingProgress.expectedTotalBytes != null
? loadingProgress.cumulativeBytesLoaded / loadingProgress.expectedTotalBytes!
: null,
),
);
},
),
)
: const Text(noData),
whatMake: 'Image',
onPressed: () {
imageList = faker.images.images(imageLength);
setState(() {});
},
),
],
),
),
),
floatingActionButton: FloatingActionButton(
onPressed: () => clearAllVariables(),
tooltip: 'Clear All Variables',
child: const Icon(
Icons.clear,
),
),
);
}
}
class BuildSection extends StatelessWidget {
const BuildSection({
super.key,
required this.showWidget,
required this.whatMake,
required this.onPressed,
});
final Widget showWidget;
final String whatMake;
final VoidCallback onPressed;
[@override](/user/override)
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(10.0),
child: Column(
children: [
showWidget,
const SizedBox(
height: 10,
),
ElevatedButton(
onPressed: onPressed,
child: Text("Make $whatMake"),
),
],
),
);
}
}
更多关于Flutter生成韩国假数据插件faker_korean的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter生成韩国假数据插件faker_korean的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用faker_korean
插件来生成韩国假数据的示例代码。这个插件允许你生成一些常见的韩国姓名、地址、电话号码等假数据。
首先,你需要在你的pubspec.yaml
文件中添加faker_korean
依赖:
dependencies:
flutter:
sdk: flutter
faker_korean: ^最新版本号 # 请替换为当前最新版本号
然后运行flutter pub get
来安装依赖。
接下来,在你的Flutter项目中,你可以使用以下代码来生成韩国假数据:
import 'package:flutter/material.dart';
import 'package:faker_korean/faker_korean.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Faker Korean Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: FakeDataDemo(),
);
}
}
class FakeDataDemo extends StatefulWidget {
@override
_FakeDataDemoState createState() => _FakeDataDemoState();
}
class _FakeDataDemoState extends State<FakeDataDemo> {
String? fakeName;
String? fakeAddress;
String? fakePhoneNumber;
@override
void initState() {
super.initState();
generateFakeData();
}
void generateFakeData() async {
final fakerKorean = FakerKorean();
String name = fakerKorean.person.name();
String address = fakerKorean.address.streetAddress();
String phoneNumber = fakerKorean.phone.phoneNumber();
setState(() {
fakeName = name;
fakeAddress = address;
fakePhoneNumber = phoneNumber;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Faker Korean Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('Fake Name:', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
Text(fakeName ?? 'Loading...'),
SizedBox(height: 16),
Text('Fake Address:', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
Text(fakeAddress ?? 'Loading...'),
SizedBox(height: 16),
Text('Fake Phone Number:', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
Text(fakePhoneNumber ?? 'Loading...'),
],
),
),
);
}
}
在这个示例中,我们做了以下几件事:
- 在
pubspec.yaml
文件中添加了faker_korean
依赖。 - 创建了一个简单的Flutter应用,包含一个主页面
FakeDataDemo
。 - 在
FakeDataDemo
的initState
方法中,使用faker_korean
插件生成假数据,并通过setState
方法更新UI。 - 在UI中显示生成的假数据,包括姓名、地址和电话号码。
你可以根据需要进一步自定义和扩展这个示例。