在 Dart(以及 Flutter)中生成随机字符串的 3 种不同方法【Flutter 专题 21】

简介: 本文向您展示了在 Dart(以及 Flutter)中生成随机字符串的 3 种不同方法。事不宜迟,让我们深入研究代码。加入随机字母和数字下面的示例演示了如何生成具有给定长度的随机字符串。结果将仅包含字母和数字(az、AZ、0-9)。

本文向您展示了在 Dart(以及 Flutter)中生成随机字符串的 3 种不同方法。事不宜迟,让我们深入研究代码。

加入随机字母和数字

下面的示例演示了如何生成具有给定长度的随机字符串。结果将仅包含字母和数字(az、AZ、0-9)。

import 'dart:math';
import 'package:flutter/foundation.dart';
// Define a reusable function
String generateRandomString(int length) {
  final _random = Random();
  const _availableChars =
      'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890';
  final randomString = List.generate(length,
          (index) => _availableChars[_random.nextInt(_availableChars.length)])
      .join();
  return randomString;
}
void main() {
  debugPrint(generateRandomString(10));
  debugPrint(generateRandomString(20));
}

每次运行上述代码时,输出都会不同:


tFKOzF6eOs
WsJ1tF6IyIBfMMXCQS1t

使用加密库

这种方法利用了 Dart 团队发布的crypto包。下面的示例将使用 md5 散列和 sha1 散列来生成随机字符串。


例子:

import 'package:flutter/foundation.dart';
import 'dart:math';
import 'dart:convert';
import 'package:crypto/crypto.dart';
// md5 hashing a random number
String md5RandomString() {
  final randomNumber = Random().nextDouble();
  final randomBytes = utf8.encode(randomNumber.toString());
  final randomString = md5.convert(randomBytes).toString();
  return randomString;
}
// sha1 hashing a random number
String sha1RandomString() {
  final randomNumber = Random().nextDouble();
  final randomBytes = utf8.encode(randomNumber.toString());
  final randomString = sha1.convert(randomBytes).toString();
  return randomString;
}
void main() {
  debugPrint(md5RandomString());
  debugPrint(sha1RandomString());
}

输出:


eb858fc63586fb81123d750fe82e39e0
35911da7d122bffeb75714cdde4c96b55c7fa8ef

使用字符代码

此示例将生成具有给定长度的随机字符串。结果将包含特殊字符。

import 'dart:math';
import 'package:flutter/foundation.dart';
// Declare a fucntion for reusable purpose
String generateRandomString(int len) {
  final _random = Random();
  final result = String.fromCharCodes(
      List.generate(len, (index) => _random.nextInt(33) + 89));
  return result;
}
void main() {
  debugPrint(generateRandomString(50));
  debugPrint(generateRandomString(20));
}

输出:


`[uvj][d\oZvymn]tYes]l]_gydf_uYmacjvgtanlinr_lougc
d__xvvvpclgfjqwqZZs\

总结

我们已经了解了在 Dart 和 Flutter 程序中创建随机字符串的几种不同方法。如果您想探索有关 Dart 和 Flutter 的更多新鲜有趣的东西,

相关文章
|
5月前
|
API Android开发 iOS开发
除了permission_handler插件,还有哪些方法可以实现Flutter动态申请权限?
除了permission_handler插件,还有哪些方法可以实现Flutter动态申请权限?
315 68
|
Dart
如何在 Flutter 项目中使用 Dart 语言?
如何在 Flutter 项目中使用 Dart 语言?
222 58
|
11月前
|
开发框架 前端开发 定位技术
Flutter框架中的插件市场及开源资源的利用方法。内容涵盖插件市场的扩展功能、时间节省与质量保证
本文深入探讨了Flutter框架中的插件市场及开源资源的利用方法。内容涵盖插件市场的扩展功能、时间节省与质量保证,常见插件市场的介绍,选择合适插件的策略,以及开源资源的利用价值与注意事项。通过案例分析和对社区影响的讨论,展示了这些资源如何促进开发效率和技术进步,并展望了未来的发展趋势。
228 11
|
11月前
|
开发框架 Dart 前端开发
Flutter 是谷歌推出的一款高效跨平台移动应用开发框架,使用 Dart 语言,具备快速开发、跨平台支持、高性能、热重载及美观界面等特点。
Flutter 是谷歌推出的一款高效跨平台移动应用开发框架,使用 Dart 语言,具备快速开发、跨平台支持、高性能、热重载及美观界面等特点。本文从 Flutter 简介、特点、开发环境搭建、应用架构、组件详解、路由管理、状态管理、与原生代码交互、性能优化、应用发布与部署及未来趋势等方面,全面解析 Flutter 技术,助你掌握这一前沿开发工具。
869 8
|
11月前
|
缓存 前端开发 数据安全/隐私保护
Flutter 框架提供了丰富的机制和方法来优化键盘处理和输入框体验
在移动应用开发中,Flutter 框架提供了丰富的机制和方法来优化键盘处理和输入框体验。本文深入探讨了键盘的显示与隐藏、输入框的焦点管理、键盘类型的适配、输入框高度自适应、键盘遮挡问题处理及性能优化等关键技术,结合实例分析,旨在帮助开发者提升应用的用户体验。
452 6
|
11月前
|
Dart
flutter dart mixin 姿势
flutter dart mixin 姿势
|
11月前
|
Dart 开发者 索引
flutter_鸿蒙next_Dart基础①字符串
本文深入探讨了 Dart 编程语言中的字符串操作,包括字符串的声明、拼接、分割、修剪、查找、定位和正则表达式验证等常用方法。通过具体的代码示例,展示了如何在 Dart 中高效地处理字符串,适用于 Flutter 开发及其他领域。
230 1
|
12月前
|
Dart 开发者 Windows
flutter:dart的学习
本文介绍了Dart语言的下载方法及基本使用,包括在Windows系统上和VSCode中的安装步骤,并展示了如何运行Dart代码。此外,还详细说明了Dart的基础语法、构造函数、泛型以及库的使用方法。文中通过示例代码解释了闭包、运算符等概念,并介绍了Dart的新特性如非空断言操作符和延迟初始化变量。最后,提供了添加第三方库依赖的方法。
150 12
|
Dart 前端开发 JavaScript
Flutter&Dart-异步编程Future、Stream极速入门
Flutter&Dart-异步编程Future、Stream极速入门
206 4
Flutter&Dart-异步编程Future、Stream极速入门
|
12月前
|
开发者
flutter:总结所有需要用到的方法与实战 (十六)
本文介绍了Flutter中路由和顶部导航的使用方法,包括简单路由、命名路由、返回及返回根路由的实现。同时,详细讲解了顶部导航的定义与属性设置,并通过实战案例展示了复杂布局、新闻列表和页面制作的思路。最后,还提供了父类向子类传递参数的方法以及如何添加依赖库。
120 0