4.設定transaction state
設定lib\bloc\transaction_state.dart¶
Code¶
part of 'transaction_bloc.dart';
abstract class TransactionState {}
class TransactionInitial extends TransactionState {}
class TransactionsLoaded extends TransactionState {
final List<Transaction> transactions;
TransactionsLoaded(this.transactions);
}
解釋¶
交易Bloc狀態解釋¶
在Flutter中,Bloc(Business Logic Component)是一種用於管理狀態和處理用戶交互的設計模式。以下是關於交易相關狀態的簡要解釋。
代碼片段解釋¶
TransactionState是所有交易相關狀態的基類,它是一個抽象類,不包含具體實現。
TransactionInitial表示初始狀態,通常在應用程序啟動時使用,表示還沒有加載任何交易數據。
class TransactionsLoaded extends TransactionState {
final List<Transaction> transactions;
TransactionsLoaded(this.transactions);
}
TransactionsLoaded表示已加載交易數據的狀態。它包含一個名為transactions的列表,其中存儲了所有已加載的交易數據。
例子¶
讓我們通過一個簡單的例子來說明這些狀態的使用:
// 創建一個初始狀態
TransactionState initialState = TransactionInitial();
// 創建一個已加載交易數據的狀態
List<Transaction> loadedTransactions = [
Transaction(amount: 50, description: '購物'),
Transaction(amount: 30, description: '餐廳'),
];
TransactionState loadedState = TransactionsLoaded(loadedTransactions);
在實際應用中,這些狀態將與Bloc一起使用,以表示應用程序的當前狀態,並根據狀態的變化來更新UI界面。
Q:abstract class TransactionState {}有abstract與沒有的差別?
在Dart中,有abstract關鍵字的類是抽象類,不能直接實例化,需要通過子類來實現其抽象方法;而沒有abstract關鍵字的類是具體類,可以直接實例化和使用。例如,在TransactionState類中,如果有abstract關鍵字,則表示TransactionState是一個抽象類,不能直接創建其實例,而是需要創建其具體子類的實例。
如果沒有abstract關鍵字,則TransactionState是一個具體類,可以直接創建實例。在實際應用中,如果我們希望某個類作為其他類的基類,並且希望子類實現其中的一些方法,可以使用abstract關鍵字來定義抽象類。而如果我們希望直接創建實例並使用該類的功能,則定義一個具體類即可。
舉例來說,如果我們有一個Animal類,希望其他動物類繼承它並實現自己的聲音方法,那麽Animal類可以使用abstract關鍵字定義為抽象類。而如果我們有一個Car類,它直接表示一輛汽車,並且不需要子類實現額外的方法,那麽Car類可以定義為一個具體類。
Last update :
13 novembre 2024
Created : 13 novembre 2024
Created : 13 novembre 2024