簡體   English   中英

如何在另一個文件 dart 中調用類方法

[英]How to call class method in another file dart

我已經學習飛鏢幾天了。 我創建了一個驗證類,我將在 TextFormField 驗證器中使用它,但我不知道如何調用該函數

我知道文檔顫動使用這個

validator: (value) {
  if (value.isEmpty) {
    return 'Please enter some text';
  }
  return null;
}

但是我創建了這個類,所以當我需要它時只需調用該函數

class Validation {
  
  String validatePassword(String value) {
    if (value.length < 4) {
      return 'Password Minimal 4 Karakter';
    }
    return null;
  }

  String validateEmail(String value) {
    if (!value.contains('@')) {
      return 'Email Tidak Valid';
    }
    return null;
  }

  String validatedName(String value) {
    if (value.isEmpty) {
      return 'Nama Tidak Boleh Kosong';
    }
    return null;
  }

}

這是將調用驗證類的代碼

import 'package:flutter/material.dart';
import 'package:flutapp/src/mixins/validation.dart';

class RegisterScreen extends StatefulWidget {
  createState() {
    return RegisterScreenState();
  }
}

class RegisterScreenState extends State<RegisterScreen> with Validation {

  final formKey = GlobalKey<FormState>();

  String name = '';
  String email = '';
  String password = '';

  @override
  Widget build(BuildContext context) {
    return Container(
      margin: EdgeInsets.all(20.0),
      child: Form(
        key: formKey,
        child: Column(
          children: [
            nameField(),
            emailField(),
            passwordField(),
            registerButton(),
          ],
        ),
      )
    );
  }
}

Widget nameField() {
  return TextFormField(
    decoration: InputDecoration(
      labelText: 'Nama Lengkap'
    ),
    validator: validateName,
  );
}

Widget emailField() {
  return TextFormField(
    keyboardType: TextInputType.emailAddress,
    decoration: InputDecoration(
      labelText: 'Email',
      hintText: 'contoh@gmail.com'
    ),
  );
}

Widget passwordField() {
  return TextFormField(
    obscureText: true,
    decoration: InputDecoration(
      labelText: 'Password',
      hintText: 'contoh@password123'
    ),
  );
}

Widget registerButton() {
  return RaisedButton(
    color: Colors.blueAccent,
    onPressed: () {

    },
    child: Text('Register'),
  );
}

任何答案將不勝感激

只需在TextFormFieldvalidator屬性中調用您的驗證validator

return TextFormField(
    obscureText: true,
    // added this line
    validator: Validation(). validatePassword,
    decoration: InputDecoration(
      labelText: 'Password',
      hintText: 'contoh@password123'
    ),
  );

該函數與驗證器屬性具有相同的簽名,因此您可以這樣做,而不是這樣:

return TextFormField(
    obscureText: true,
    // added this line
    validator: (String value)=> Validation().validatePassword(value),
    decoration: InputDecoration(
      labelText: 'Password',
      hintText: 'contoh@password123'
    ),
  );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM