Skip to content

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)是一種用於管理狀態和處理用戶交互的設計模式。以下是關於交易相關狀態的簡要解釋。

代碼片段解釋

abstract class TransactionState {}
  • TransactionState是所有交易相關狀態的基類,它是一個抽象類,不包含具體實現。
class TransactionInitial extends 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

Comments

Comments