Flutter模糊处理插件fuzz_dart的使用

Flutter模糊处理插件fuzz_dart的使用

什么是模糊测试

模糊测试是一种检测函数意外输入的方法。

  • 创建一个文件夹用于模糊测试。
  • 将你的文件放在这个文件夹下。
import 'package:fuzz_dart/fuzz_dart.dart' as fuzz_dart;

void main(List<String> arguments) {
  
}

示例

这是一个问候函数。

我们在这里有一个控制,但是我们对子字符串没有任何约束。如果 name 变量长度小于10,这个函数将抛出错误。

所以模糊测试可以找到这样的错误,并生成一个 HTML 文件。

运行此文件:dart run {FILENAME}

void main(List<String> arguments) {
  greeter(String name, String lastname) {
    if (name.length > 13) {
      throw Exception('name is so long');
    }
    name.substring(10);
    return "hello $name $lastname";
  }

  fuzz_dart.Fuzzer greeterFunctionFuzzer = fuzz_dart.Fuzzer(
      type: [fuzz_dart.AcceptedTypes.string],
      iterateCount: 12,
      fileName: 'greeter-fuzzer');
  greeterFunctionFuzzer.iterate(greeter, 'greeting!',
      description: 'Returns name and lastname');
}

输出

Exception: name is so long - Arguments: [ovfpdf|qelzyavu`, m}oqc~wgo]
RangeError (start): Invalid value: Not in inclusive range 0..2: 20 - Arguments: [g, du~klr]
Exception: name is so long - Arguments: [w{kpa}tdy}r~slrnvstp, s|_qr|rtsjzrz~vid}|dlvyvyi_~d~tbooj_|lvmq]
Exception: name is so long - Arguments: [ik|ca|k_gdilltbyyl|osooyzdirjza{{y, zuoo~u}woxsx|kqznyucvadwnpnmp_kp]
RangeError (start): Invalid value: Only valid value is 0: 20 - Arguments: [, fypr|cjnk|irec|vepfpypgs~rdjeltr_y{}io|{ucre`~d]
Exception: name is so long - Arguments: [vhedjuscuoervjauram`y}i{q{mxigw, sxypbkwjrqszjlszoy}siiswclhqdrpylwiprk]
Exception: name is so long - Arguments: [~ol{`butmq~how, jkfykl{i`spvoqz~qjkqcm`]
Exception: name is so long - Arguments: [~nmgrmmoujpqyssvgz{hjtm~_w, zqx{|tkhdpg]
Exception: name is so long - Arguments: [ylne}rmrwrear_fv~g`z{{dz_ecsefk|rot_bvfqa, ejwu]

示例 2

确保在 type 属性中参数顺序正确。

import 'package:fuzz_dart/fuzz_dart.dart' as fuzz_dart;

String calculate(int num1, int num2) {
  if (num1 > 2000) {
    throw Exception('num1 should lower than 2000');
  }
  return "result of two number is ${num1 + num2}";
}

String calculate2(int num1, int num2, int num3) {
  return "result of three number is ${num1 + num2 + num3}";
}

fuzz_dart.Fuzzer greeterFunctionFuzzer = fuzz_dart.Fuzzer(
    type: [fuzz_dart.AcceptedTypes.string],
    iterateCount: 12,
    fileName: 'greeter-fuzzer');

fuzz_dart.Fuzzer intFuzzer = fuzz_dart.Fuzzer(
    type: [fuzz_dart.AcceptedTypes.integer],
    iterateCount: 3,
    fileName: 'fuzzer 1');

fuzz_dart.Fuzzer intFuzzer2 = fuzz_dart.Fuzzer(
    type: [fuzz_dart.AcceptedTypes.integer],
    iterateCount: 2,
    fileName: 'fuzzer-2');

intFuzzer2.iterate(calculate, 'calculator 1');
intFuzzer.iterate(calculate2, 'calculator 2');
greeterFunctionFuzzer.iterate(greeter, 'greeting!',
    description: 'Returns name and lastname');
listFuzzer.iterate(arrs, 'list fuzzer fun');
cityFuzzer.iterate(city, 'city', description: 'Returns current index');

更多关于Flutter模糊处理插件fuzz_dart的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter模糊处理插件fuzz_dart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


fuzz_dart 并不是 Flutter 官方或广泛使用的模糊处理插件。如果你在寻找模糊处理相关的功能,Flutter 提供了内置的 BackdropFilterImageFilter.blur 来实现图像或视图的模糊效果。

使用 BackdropFilter 进行模糊处理

BackdropFilter 是一个 widget,它可以将模糊效果应用到其背后的内容。下面是一个简单的示例,展示如何使用 BackdropFilter 来创建一个模糊的背景:

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Stack(
          children: [
            // Background content
            Container(
              decoration: BoxDecoration(
                image: DecorationImage(
                  image: NetworkImage('https://via.placeholder.com/150'),
                  fit: BoxFit.cover,
                ),
              ),
            ),
            // Blur effect
            BackdropFilter(
              filter: ImageFilter.blur(sigmaX: 5.0, sigmaY: 5.0),
              child: Container(
                color: Colors.black.withOpacity(0.1),
              ),
            ),
            // Foreground content
            Center(
              child: Text(
                'This is a blurred background',
                style: TextStyle(color: Colors.white, fontSize: 24),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

使用 ImageFilter.blur 进行模糊处理

ImageFilter.blur 可以用于创建高斯模糊效果。你可以将其与 BackdropFilter 结合使用,如上面的示例所示。

其他模糊处理插件

如果你在寻找更高级的模糊处理功能,可以考虑以下插件:

  1. flutter_blurhash: 用于生成和应用模糊的占位符图像。
  2. blurry: 一个简单的库,用于在 Flutter 中快速添加模糊效果。
  3. transparent_image: 用于加载图像时显示模糊的占位符。

安装插件

你可以通过 pubspec.yaml 文件来添加这些插件:

dependencies:
  flutter:
    sdk: flutter
  flutter_blurhash: ^0.5.0
  blurry: ^0.1.2
  transparent_image: ^2.0.0
回到顶部