Flutter随机人物数据生成插件random_person_data的使用

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

Flutter随机人物数据生成插件random_person_data的使用

random_person_data 库是一个 Dart 包,它提供了从 Random User Generator API 获取随机用户数据的便捷方式。它简化了 HTTP 请求的过程,并将接收到的数据解析为可用的对象。

开始使用

要使用此库,请遵循以下步骤:

  1. 在你的 pubspec.yaml 文件中添加 random_person_data 包:
dependencies:
  random_person_data: ^1.0.1  # 替换为最新版本
  1. 在你的 Dart 文件中导入包:
import 'package:random_person_data/random_person_data.dart';
  1. 使用 RandomPerson 类来获取随机用户数据:
Future<void> fetchRandomPerson() async {
  final randomPerson = RandomPerson();
  try {
    List<RandomPersonData> persons = await randomPerson.get(results: 1);
    // 对获取的数据进行操作
    print(persons[0].name?.first); // 打印获取到的第一个用户的名
  } catch (e) {
    print('Error fetching data: $e');
  }
}

结果

API 将为你提供一个包含随机用户数据的格式化对象。默认格式是 JSON,但你可以通过 format 参数请求不同的格式。

{
  "results": [
    {
      "gender": "female",
      "name": {
        "title": "Miss",
        "first": "Jennie",
        "last": "Nichols"
      },
      "location": {
        "street": {
          "number": 8929,
          "name": "Valwood Pkwy"
        },
        "city": "Billings",
        "state": "Michigan",
        "country": "United States",
        "postcode": "63104",
        "coordinates": {
          "latitude": "-69.8246",
          "longitude": "134.8719"
        },
        "timezone": {
          "offset": "+9:30",
          "description": "Adelaide, Darwin"
        }
      },
      "email": "jennie.nichols@example.com",
      "login": {
        "uuid": "7a0eed16-9430-4d68-901f-c0d4c1c3bf00",
        "username": "yellowpeacock117",
        "password": "addison",
        "salt": "sld1yGtd",
        "md5": "ab54ac4c0be9480ae8fa5e9e2a5196a3",
        "sha1": "edcf2ce613cbdea349133c52dc2f3b83168dc51b",
        "sha256": "48df5229235ada28389b91e60a935e4f9b73eb4bdb855ef9258a1751f10bdc5d"
      },
      "dob": {
        "date": "1992-03-08T15:13:16.688Z",
        "age": 30
      },
      "registered": {
        "date": "2007-07-09T05:51:59.390Z",
        "age": 14
      },
      "phone": "(272) 790-0888",
      "cell": "(489) 330-2385",
      "id": {
        "name": "SSN",
        "value": "405-88-3636"
      },
      "picture": {
        "large": "https://randomuser.me/api/portraits/men/75.jpg",
        "medium": "https://randomuser.me/api/portraits/med/men/75.jpg",
        "thumbnail": "https://randomuser.me/api/portraits/thumb/men/75.jpg"
      },
      "nat": "US"
    }
  ],
  "info": {
    "seed": "56d27f4a53bd5441",
    "results": 1,
    "page": 1,
    "version": "1.4"
  }
}

API 错误

如果 API 服务离线或遇到服务器问题,响应将是一个简单的 JSON 对象,其中包含错误信息。

{
  "error": "Uh oh, something has gone wrong. Please tweet us @randomapi about the issue. Thank you."
}

请求多个用户

你可以一次请求最多 5,000 个生成的用户,使用 results 参数。

RandomPerson randomPerson = RandomPerson();
List<RandomPersonData> persons = await randomPerson.get(results: 5000);

指定性别

你可以通过添加 gender 参数来指定你想要的用户性别。有效的 gender 参数值为 “male” 或 “female”,或者留空以接收男性和女性用户。

RandomPerson randomPerson = RandomPerson();
List<RandomPersonData> females = await randomPerson.get(gender: Gender.female);
List<RandomPersonData> males = await randomPerson.get(gender: Gender.male);
List<RandomPersonData> both = await randomPerson.get();

密码

默认情况下,密码是从大约 10,000 个常用密码列表中随机选择的。从版本 1.1 开始,你可以使用 password 选项对密码生成有更多的控制。

RandomPerson randomPerson = RandomPerson();
List<RandomPersonData> persons = await randomPerson.get(password: "upper,lower,1-16");

你可以混合字符集来生成所需的密码长度。

国籍

你可以通过 nat 参数请求特定国籍的数据。图片不会受到影响,但位置、电话等数据将更适合指定的国籍。

RandomPerson randomPerson = RandomPerson();
List<RandomPersonData> usPersons = await randomPerson.get(nationality: Nationality.US);

你可以使用逗号分隔的列表来指定多个国籍。

包含/排除字段

你可以使用 incexc 参数来指定要包含或排除的生成用户数据的字段。

RandomPerson randomPerson = RandomPerson();
List<RandomPersonData> namesAndNats = await randomPerson.get(includeFields: [IncludeField.name, IncludeField.nat]);
List<RandomPersonData> withoutLogin = await randomPerson.get(excludeFields: [ExcludeField.login]);

使用以前的版本

如果你想访问某个不会受到更新影响的 API 版本,可以在 API URL 中指定该版本。

const String baseUrl = 'https://randomuser.me/api/1.4/';

免责声明

这个库依赖于 Random User Generator API,其可用性和响应格式可能会因 API 提供商而变化。请参阅官方 Random User Generator 文档以获取最新的信息。

对于与此库相关的任何问题或反馈,请在 GitHub 上创建一个问题。祝编码愉快!


示例代码

Widget build(BuildContext context) {
  return MaterialApp(
    home: Scaffold(
      appBar: AppBar(title: const Text('Random Person Data')),
      body: FutureBuilder<List<RandomPersonData>>(
        future: RandomPerson().get(results: 4, gender: Gender.female),
        builder: (BuildContext context, AsyncSnapshot<List<RandomPersonData>> snapshot) {
          if (snapshot.connectionState == ConnectionState.waiting) {
            return const Center(child: CircularProgressIndicator());
          } else if (snapshot.hasError) {
            return const Center(child: Text('Error loading data'));
          } else if (snapshot.data != null) {
            return ListView.builder(
              itemCount: snapshot.data!.length,
              itemBuilder: (BuildContext context, int index) {
                final randomUser = snapshot.data![index];
                return ListTile(
                  leading: Image.network(randomUser.picture!.large!),
                  title: Text('${randomUser.name!.first!} ${randomUser.name!.last!}'),
                );
              },
            );
          } else {
            return const Center(child: Text('Unexpected state'));
          }
        },
      ),
    ),
  );
}

更多关于Flutter随机人物数据生成插件random_person_data的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter随机人物数据生成插件random_person_data的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用random_person_data插件来生成随机人物数据的示例代码。

首先,确保你已经在pubspec.yaml文件中添加了random_person_data依赖项:

dependencies:
  flutter:
    sdk: flutter
  random_person_data: ^latest_version  # 替换为实际的最新版本号

然后运行flutter pub get来安装依赖项。

接下来,在你的Dart文件中,你可以使用random_person_data插件来生成随机人物数据。以下是一个完整的示例代码:

import 'package:flutter/material.dart';
import 'package:random_person_data/random_person_data.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Random Person Data Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: RandomPersonScreen(),
    );
  }
}

class RandomPersonScreen extends StatefulWidget {
  @override
  _RandomPersonScreenState createState() => _RandomPersonScreenState();
}

class _RandomPersonScreenState extends State<RandomPersonScreen> {
  Person? randomPerson;

  @override
  void initState() {
    super.initState();
    _generateRandomPerson();
  }

  void _generateRandomPerson() {
    final RandomPersonData randomPersonData = RandomPersonData();
    setState(() {
      randomPerson = randomPersonData.generateRandomPerson();
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Random Person Data'),
      ),
      body: Center(
        child: randomPerson == null
            ? CircularProgressIndicator()
            : Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Text('Name: ${randomPerson!.firstName} ${randomPerson!.lastName}'),
                  Text('Age: ${randomPerson!.age}'),
                  Text('Gender: ${randomPerson!.gender}'),
                  Text('Email: ${randomPerson!.email}'),
                  Text('Phone Number: ${randomPerson!.phoneNumber}'),
                  Text('Address: ${randomPerson!.address.streetAddress}, ${randomPerson!.address.city}, ${randomPerson!.address.state}, ${randomPerson!.address.postalCode}, ${randomPerson!.address.country}'),
                ],
              ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _generateRandomPerson,
        tooltip: 'Generate Random Person',
        child: Icon(Icons.refresh),
      ),
    );
  }
}

在这个示例中,我们创建了一个Flutter应用,其中包含一个生成随机人物数据的屏幕。RandomPersonScreen是一个有状态的Widget,它在initState方法中生成一个随机人物,并在UI中显示该人物的详细信息。用户可以通过点击浮动操作按钮来生成新的随机人物。

RandomPersonData类的generateRandomPerson方法用于生成随机人物数据,包括姓名、年龄、性别、电子邮件、电话号码和地址。这些数据被显示在UI中。

确保你已经正确安装了random_person_data插件,并且Flutter环境配置正确,以便运行这个示例代码。

回到顶部