Flutter 表單的 dirty 範例

Flutter 的表單(Form)有一個屬性 dirty,可以用來判斷表單是否被修改過(即是否 "dirty")。當使用者在表單中輸入或修改任何一個欄位時,表單就會被標記為 dirty。

以下是一個示範如何使用 dirty 屬性的 Flutter 程式碼:


import 'package:flutter/material.dart'; class MyFormPage extends StatefulWidget { @override _MyFormPageState createState() => _MyFormPageState(); } class _MyFormPageState extends State<MyFormPage> { final _formKey = GlobalKey<FormState>(); bool _isDirty = false; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('My Form Page'), ), body: Form( key: _formKey, onChanged: () { setState(() { _isDirty = _formKey.currentState!.validate(); }); }, child: Column( children: <Widget>[ TextFormField( decoration: InputDecoration(labelText: 'Username'), validator: (value) { if (value!.isEmpty) { return 'Please enter your username'; } return null; }, ), TextFormField( decoration: InputDecoration(labelText: 'Password'), obscureText: true, validator: (value) { if (value!.isEmpty) { return 'Please enter your password'; } return null; }, ), ElevatedButton( onPressed: _isDirty ? () {} : null, child: Text('Submit'), ), ], ), ), ); } }


這個範例建立了一個表單,其中包含了兩個文本欄位(用來輸入使用者名稱和密碼)和一個提交按鈕。表單中每個欄位都有一個驗證器,用來確保使用者輸入了有效的資訊。

_MyFormPageState 類別中,我們建立了一個 _isDirty 布林值,用來追蹤表單是否被修改過。我們在表單的 onChanged 屬性中設定一個函式,用來在表單修改時更新 _isDirty 值。這個函式會先驗證表單是否有效,然後再設定 _isDirty 值。

最後,我們在提交按鈕的 onPressed 屬性中檢查 _isDirty 值,如果表單已經被修改過,就執行提交表單的程式碼,否則禁用按鈕。

留言

這個網誌中的熱門文章

flutter 使用 ToastDialog 範例

[flutter]flutter如何防止GPS偽定位

ScaffoldMessenger 範例