Skip to content

6.設定main

設定main.dart

Code

import 'package:flutter/material.dart';
import 'bloc/transaction_bloc.dart';
import 'package:hive_flutter/hive_flutter.dart';
import 'view/home_page.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'models/expense.dart';

void main() async {
  // var box = Hive.box('transactions');
  // await box.deleteFromDisk();
  await Hive.initFlutter();
  Hive.registerAdapter(TransactionAdapter());
  final transactionBox = await Hive.openBox<Transaction>('transactions');

  runApp(
    BlocProvider(
      create: (context) => TransactionBloc(transactionBox),
      child: MyApp(),
    ),
  );
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Expense Tracker',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: const HomePage(),
    );
  }
}

解釋

這段代碼是一個 Flutter 應用程序的主入口文件。讓我們來逐步解釋:

  1. main 函數是 Dart 應用程序的入口點,它會首先執行應用程序的初始化工作,然後調用 runApp 函數來啟動應用程序。

  2. await Hive.initFlutter():這行代碼初始化了 Hive 數據庫,用於在 Flutter 應用程序中進行本地數據存儲。Hive.initFlutter() 函數會返回一個 Future,因此使用 await 關鍵字來等待初始化完成。

  3. Hive.registerAdapter(TransactionAdapter()):這行代碼注冊了一個自定義的 Hive 數據模型適配器,用於將 Dart 對象和 Hive 數據庫中的數據進行相互轉換。

  4. final transactionBox = await Hive.openBox<Transaction>('transactions'):這行代碼打開了一個名為 ‘transactions’ 的 Hive 數據存儲盒子,用於存儲交易數據。使用 await 關鍵字等待盒子打開完成。

  5. BlocProvider:這是一個用於管理 BLoC(Business Logic Component)狀態的 Flutter 小部件,它接收一個 create 方法來創建 BLoC 實例,並將其提供給應用程序的所有子部件。

  6. create: (context) => TransactionBloc(transactionBox):這行代碼創建了一個 TransactionBloc 的實例,並將打開的交易數據盒子傳遞給它。TransactionBloc 是一個用於管理交易數據狀態的 BLoC。

  7. MyApp 類是應用程序的根小部件,它繼承自 StatelessWidget,用於構建整個應用程序的 UI。

  8. MaterialApp 是一個 MaterialApp 小部件,用於創建一個遵循 Material Design 規範的應用程序。它接收一些參數,如標題、主題和主頁等。

  9. home: const HomePage():這行代碼指定了應用程序的初始頁面為 HomePageHomePage 是應用程序的主界面,用於顯示交易記錄和交易操作按鈕等。

這段代碼的作用是初始化應用程序的各項配置,包括初始化 Hive 數據庫、注冊數據模型適配器、打開數據存儲盒子,並創建並提供一個 TransactionBloc 實例,最後啟動應用程序並顯示主界面。


Last update : 13 novembre 2024
Created : 13 novembre 2024

Comments

Comments