Flutter生成韩国假数据插件faker_korean的使用

发布于 1周前 作者 ionicwang 来自 Flutter

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
email 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

1 回复

更多关于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...'),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下几件事:

  1. pubspec.yaml文件中添加了faker_korean依赖。
  2. 创建了一个简单的Flutter应用,包含一个主页面FakeDataDemo
  3. FakeDataDemoinitState方法中,使用faker_korean插件生成假数据,并通过setState方法更新UI。
  4. 在UI中显示生成的假数据,包括姓名、地址和电话号码。

你可以根据需要进一步自定义和扩展这个示例。

回到顶部