Flutter密码生成插件password_maker的使用
Flutter密码生成插件password_maker的使用
Description
这是一个帮助在登录界面为新用户建议强密码的包。
Features
您可以指定密码的长度。
Getting Started
导入该包:
import 'package:password_maker/password_maker.dart';
Depend on it
在pubspec.yaml
文件中添加依赖:
dependencies:
password_maker: ^0.0.2
Usage
初始化一个临时字符串用于存储生成的密码,然后调用generatePassWord
方法(传入密码长度)。
以下是完整的示例代码:
import 'package:flutter/material.dart';
import 'package:password_maker/password_maker.dart';
import 'package:provider/provider.dart';
import 'package:flutter/services.dart';
void main() {
runApp(
ChangeNotifierProvider<ThemeProvider>(
// for theme
create: (_) => ThemeProvider(),
builder: (context, _) => MyApp(),
),
);
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
final themeProvider = Provider.of<ThemeProvider>(context);
SystemChrome.setSystemUIOverlayStyle(
SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
statusBarBrightness: themeProvider.isDarkMode ? Brightness.light : Brightness.dark,
),
);
return MaterialApp(
debugShowCheckedModeBanner: false,
themeMode: themeProvider.isDarkMode ? ThemeMode.dark : ThemeMode.light,
theme: ThemeData.light().copyWith(
colorScheme: ThemeData.light().colorScheme.copyWith(),
),
darkTheme: ThemeData.dark().copyWith(
colorScheme: ThemeData.dark().colorScheme.copyWith(),
),
home: LaunchScreen());
}
}
class LaunchScreen extends StatefulWidget {
[@override](/user/override)
_LaunchScreenState createState() => _LaunchScreenState();
}
class _LaunchScreenState extends State<LaunchScreen> {
[@override](/user/override)
void initState() {
super.initState();
// LaunchScreen
Future.delayed(Duration(seconds: 2), () {
Navigator.pushReplacement(
context,
MaterialPageRoute(builder: (context) => HomePage()),
);
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: FlutterLogo(
size: 200,
),
),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
[@override](/user/override)
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
// 初始化控制器
TextEditingController _nameController = TextEditingController();
TextEditingController _PasswordController = TextEditingController();
// 生成密码并赋值给临时变量
late String temp;
[@override](/user/override)
void initState() {
super.initState();
temp = generatePassWord(10); // 这里10是密码的长度
_PasswordController = TextEditingController(text: temp); // 将临时变量赋值给密码控制器
}
// 处理控制器释放
[@override](/user/override)
void dispose() {
_PasswordController.dispose();
super.dispose();
}
[@override](/user/override)
Widget build(BuildContext context) {
final themeProvider = Provider.of<ThemeProvider>(context);
SystemChrome.setSystemUIOverlayStyle(
SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
statusBarBrightness: themeProvider.isDarkMode ? Brightness.light : Brightness.dark,
),
);
return Scaffold(
backgroundColor: themeProvider.isDarkMode
? Colors.black
: Color.fromRGBO(248, 234, 221, 1),
body: SafeArea(
child: SingleChildScrollView(
child: Column(
children: [
/// 欢迎信息
Container(
margin: EdgeInsets.all(20),
child: Text('Welcome to Flutter',
style: TextStyle(fontSize: 40, fontWeight: FontWeight.bold)),
),
/// Logo
Center(
child: Container(
child: FlutterLogo(
size: 200,
),
),
),
/// 姓名输入框
Container(
margin: EdgeInsets.fromLTRB(20, 50, 20, 20),
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
color: themeProvider._isDarkMode
? Color.fromRGBO(26, 18, 11, 1)
: Colors.white,
borderRadius: BorderRadius.circular(30),
),
child: TextField(
controller: _nameController,
decoration: InputDecoration(
hintText: 'Name',
hintStyle: TextStyle(
color: themeProvider.isDarkMode
? Colors.white
: Colors.black,
),
border: InputBorder.none),
),
),
/// 密码输入框
Container(
margin: EdgeInsets.fromLTRB(20, 20, 20, 20),
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
color: themeProvider._isDarkMode
? Color.fromRGBO(26, 18, 11, 1)
: Colors.white,
borderRadius: BorderRadius.circular(30),
),
child: TextField(
controller: _PasswordController,
decoration: InputDecoration(border: InputBorder.none),
),
),
Container(
child: Text('terms and conditions apply'),
),
/// 注册按钮
GestureDetector(
onTap: () {},
child: Container(
margin: EdgeInsets.all(5),
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
color: themeProvider._isDarkMode
? Color.fromRGBO(26, 18, 11, 1)
: Colors.white,
borderRadius: BorderRadius.circular(10),
border: Border.all(
color: Colors.blue,
width: 2,
),
),
child: Text('SIGNUP')),
),
],
),
),
),
);
}
}
// 主题管理器
class ThemeProvider with ChangeNotifier {
bool _isDarkMode = false;
ThemeProvider() {
final brightness = WidgetsBinding.instance.window.platformBrightness;
_isDarkMode = brightness == Brightness.dark;
}
bool get isDarkMode => _isDarkMode;
ThemeData getThemeData() {
return _isDarkMode
? ThemeData.dark().copyWith(
scaffoldBackgroundColor: Colors.black,
)
: ThemeData.light().copyWith(
scaffoldBackgroundColor: Colors.white,
);
}
}
更多关于Flutter密码生成插件password_maker的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter密码生成插件password_maker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
password_maker
是一个用于生成随机密码的 Flutter 插件。它可以帮助你快速生成符合特定要求的密码,例如包含大写字母、小写字母、数字和特殊字符的密码。以下是使用 password_maker
插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 password_maker
插件的依赖:
dependencies:
flutter:
sdk: flutter
password_maker: ^1.0.0 # 请确保使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入包
在你的 Dart 文件中导入 password_maker
包:
import 'package:password_maker/password_maker.dart';
3. 生成密码
使用 PasswordMaker
类来生成密码。你可以指定密码的长度以及是否包含大写字母、小写字母、数字和特殊字符。
void generatePassword() {
PasswordMaker passwordMaker = PasswordMaker();
// 生成一个包含大写字母、小写字母、数字和特殊字符的12位密码
String password = passwordMaker.generatePassword(
length: 12,
includeUppercase: true,
includeLowercase: true,
includeNumbers: true,
includeSpecialChars: true,
);
print('Generated Password: $password');
}
4. 自定义密码生成规则
你可以根据需要自定义密码的生成规则。例如,生成一个只包含数字的密码:
void generateNumericPassword() {
PasswordMaker passwordMaker = PasswordMaker();
// 生成一个只包含数字的8位密码
String password = passwordMaker.generatePassword(
length: 8,
includeUppercase: false,
includeLowercase: false,
includeNumbers: true,
includeSpecialChars: false,
);
print('Generated Numeric Password: $password');
}
5. 处理异常
password_maker
插件可能会在某些情况下抛出异常,例如当密码长度小于1时。你可以使用 try-catch
块来处理这些异常:
void safeGeneratePassword() {
PasswordMaker passwordMaker = PasswordMaker();
try {
String password = passwordMaker.generatePassword(
length: 0, // 无效的长度
includeUppercase: true,
includeLowercase: true,
includeNumbers: true,
includeSpecialChars: true,
);
print('Generated Password: $password');
} catch (e) {
print('Error generating password: $e');
}
}
6. 完整示例
以下是一个完整的示例,展示了如何在 Flutter 应用中使用 password_maker
插件:
import 'package:flutter/material.dart';
import 'package:password_maker/password_maker.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Password Maker Example'),
),
body: Center(
child: ElevatedButton(
onPressed: generatePassword,
child: Text('Generate Password'),
),
),
),
);
}
void generatePassword() {
PasswordMaker passwordMaker = PasswordMaker();
try {
String password = passwordMaker.generatePassword(
length: 12,
includeUppercase: true,
includeLowercase: true,
includeNumbers: true,
includeSpecialChars: true,
);
print('Generated Password: $password');
} catch (e) {
print('Error generating password: $e');
}
}
}