当我想确认我的密码,但无法比较第一个和最后一个密码时。
这是我的密码类。它工作正常,但确认密码部分不行。
class Password extends FormzInput<String, PasswordValidationError> {
const Password.pure() : super.pure('');
const Password.dirty([String value = '']) : super.dirty(value);
static final _passwordRegExp = RegExp(r'^[A-Za-z\d@$!%*?&]{8,}$');
@override
PasswordValidationError? validator(String value) {
if (value.isEmpty) {
return PasswordValidationError.empty;
}
return _passwordRegExp.hasMatch(value)
? null
: PasswordValidationError.invalid;
}
}
Run Code Online (Sandbox Code Playgroud)
你可以询问验证器中的值是多少。我来给你展示。
void passwordChanged(String value) {
final password = Password.dirty(value);
emit(state.copyWith(
password: password,
status: Formz.validate(
[state.name, state.email, password, state.confirmPassword]),
));
}
Run Code Online (Sandbox Code Playgroud)
这是我的正常密码字段。现在让我们看一下确认部分。
class ConfirmPassword
extends FormzInput<String, ConfirmedPasswordValidationError> {
const ConfirmPassword.pure() : super.pure('');
const ConfirmPassword.dirty([String value = '']) : …Run Code Online (Sandbox Code Playgroud) 虽然我在stackoverflow中做了这个解决方案,但图标仍然是一样的。
<meta-data android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@mipmap/ic_launcher" />
Run Code Online (Sandbox Code Playgroud)
这里是顶部图标:
哪里有问题?我还使用此网站创建透明图标:https://jgilfelt.github.io/AndroidAssetStudio/icons-notification.html#source.space.trim=1&source.space.pad=0&name=ic_stat_ic_launcher
我的 res 文件现在也是这样(来自上面链接的可绘制文件夹):
push-notification firebase firebase-realtime-database flutter firebase-cloud-messaging
我得到 EpisodeDetailsRouteArgs 不能为空,因为它有一个必需的参数这个错误,即使我传递了参数。
这是我的墨水池小部件:
onTap: () {
AutoRouter.of(context).replace(EpisodeDetailsRoute(
podcastImageUrl: podcastImageUrl,
podcastName: podcastName,
podcastOwner: podcastOwner,
podcastEpisodes: podcastEpisodes,
));
},
Run Code Online (Sandbox Code Playgroud)
我的路由器:
@MaterialAutoRouter(
replaceInRouteName: 'Page,Route',
routes: <AutoRoute>[
AutoRoute(page: IntroductionPage),
AutoRoute(
page: LoginPage,
),
AutoRoute(page: HomePage),
AutoRoute(page: EpisodeDetailsPage, initial: true),
],
)
class $AppRouter {}
Run Code Online (Sandbox Code Playgroud)
我的剧集详细信息页面:
class EpisodeDetailsPage extends StatelessWidget {
const EpisodeDetailsPage({
Key? key,
required this.podcastImageUrl,
required this.podcastName,
required this.podcastOwner,
required this.podcastEpisodes,
}) : super(key: key);
final String podcastImageUrl;
final String podcastName;
final String podcastOwner;
final String podcastEpisodes;
@override
Widget build(BuildContext context) …Run Code Online (Sandbox Code Playgroud)