Dart 生成随机字符串的三种方式

2,148 阅读1分钟

1. 加入随机字母和数字

下面的示例演示了如何生成具有给定长度的随机字符串。结果将仅包含字母和数字(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));//WsJ1tF6IyIBfMMXCQS1t
  debugPrint(generateRandomString(20));//WsJ1tF6IyIBfMMXCQS1t
}

2. 使用加密库

这种方法利用了 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());//eb858fc63586fb81123d750fe82e39e0
  debugPrint(sha1RandomString());//35911da7d122bffeb75714cdde4c96b55c7fa8ef
}

3. 使用字符代码

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

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));// `[uvj][d\oZvymn]tYes]l]_gydf_uYmacjvgtanlinr_lougc
  debugPrint(generateRandomString(20));//d__xvvvpclgfjqwqZZs\
}

转载于:点击进入原文