[英]Flutter: want to clean data when pressing back button or pressing a button
我想在按下一個按鈕時清除數據,該按鈕將我帶到下一頁或后退按鈕也清除數據。 但是當我回到同一頁面時,數據仍然存在,並且沒有回到初始頁面。 現在,我的代碼看起來像這樣:
import 'package:flutter/material.dart';
DateTime _dateFrom;
DateTime _dateTo;
bool _checked = false;
class ItemDetail extends StatelessWidget{
var someVariable1 = "something";
var someVariable2 = "Something elser";
@override
Widget build(BuildContext context) {
return Scaffold(
//Some widgets here
//_DateTimePickerAndCheckBox is also used here
);
}
}
class _DateTimePickerAndCheckBox extends StatefulWidget
{
@override
State<StatefulWidget> createState() => _DateTimePickerAndCheckBoxState();
}
class _DateTimePickerAndCheckBoxState extends State<_DateTimePickerAndCheckBox>
{
@override
Widget build(BuildContext context)
{
return Column(); //More widgets here
}
}
我想要的只是刪除 _dateFrom 和 _dateTo,因為它用於有狀態小部件,后來用於無狀態小部件。
您在任何類之外聲明變量,因此您更改的值也將存儲在這里。
DateTime _dateFrom;
DateTime _dateTo;
class ItemDetail extends StatelessWidget {} ...
選項 1 :您可以在 ItemDetail 類中聲明它。
class ItemDetail extends StatelessWidget {
DateTime _dateFrom;
DateTime _dateTo;
}
選項 2
或者,如果此文件中有多個依賴於它的類,請在其上創建一個自定義類,然后使用它。 對象將根據屏幕狀態自動創建和處理。
class _DateTime{
DateTime from;
DateTime to;
}
要使用它,請在需要時創建一個 _DateTime 對象
_DateTime dateTime = _DateTime();
dateTime.from = ... // your code here
dateTime.to = ... // your code here
如果您想稍后使用相同的對象,請記住將對象傳遞給子小部件。
警告。 您需要對如何在小部件之間傳遞數據有很好的了解,例如從父母到孩子,從孩子到父母。
一個好的方法是使用一些狀態管理工具,例如 Provider。
選項 3
這不是正確的解決方案,而只是一個聰明的黑客,您不需要更改代碼中的任何內容,除了將關閉按鈕方法替換為:
onPressed/ontap : () {
_dateFrom = null;
_dateTo = null;
Navigator.of(context).pop();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.