天天看點

#yyds幹貨盤點#在 Dart(以及 Flutter)中生成随機字元串的 3 種不同方法【Flutter專題36】

本文向您展示了在 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
WsJ1tF6IyIBfMMXCQS1      

使用加密庫

這種方法利用了 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
35911da7d122bffeb75714cdde4c96b55c7fa8e      

使用字元代碼

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      

總結