91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用flutter制作上班摸魚應用

發布時間:2022-03-23 11:26:01 來源:億速云 閱讀:137 作者:小新 欄目:開發技術

小編給大家分享一下怎么用flutter制作上班摸魚應用,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

網上最近看到了個摸魚應用,還挺好玩的,我就自己用flutter寫了一個。

之前我有用flutter制作過mobile應用,但是沒有在desktop嘗試過;畢竟2.0大更新,我這里就在這試手一下,并說說flutter的體驗.

當前flutter環境 2.8

怎么用flutter制作上班摸魚應用

增加flutter desktop支持 (默認項目之存在ios,android項目包)

flutter config --enable-<platform>-desktop

我這里是mac,因此platform=macos,詳細看flutter官網

 代碼十分簡單,UI部分就不講了

在摸魚界面,我是用了 Bloc 做倒計時計算邏輯,默認摸魚時長15分鐘

 MoYuBloc() : super(MoyuInit()) {
    on(_handleMoyuStart);
    on(_handleUpdateProgress);
    on(_handleMoyuEnd);
  }

摸魚開始事件處理

// handle moyu start action
  FutureOr<void> _handleMoyuStart(
      MoyuStarted event, Emitter<MoyuState> emit) async {
    if (_timer != null && _timer!.isActive) {
      _timer?.cancel();
    }
 
    final totalTime = event.time;
    int progressTime = state is MoyuIng ? (state as MoyuIng).progressTime : 0;
 
    _timer = Timer.periodic(const Duration(seconds: 1), (timer) {
      add(MoyuProgressUpdated(totalTime, ++progressTime));
 
      if (progressTime >= totalTime) {
        timer.cancel();
        add(MoyuEnded());
      }
    });
    emit(MoyuIng(progress: 0, progressTime: 0));
  }

摸魚進度更新

// handle clock update
  FutureOr<void> _handleUpdateProgress(
      MoyuProgressUpdated event, Emitter<MoyuState> emit) async {
    final totalTime = event.totalTime;
    final progressTime = event.progressTime;
    emit(
      MoyuIng(progress: progressTime / totalTime, progressTime: progressTime),
    );
  }

摸魚結束,釋放結束事件

// handle clock end
  FutureOr<void> _handleMoyuEnd(
      MoyuEnded event, Emitter<MoyuState> emit) async {
    emit(MoyuFinish());
  }

總結3個event (摸魚開始,進程更新,摸魚結束)

abstract class MoyuEvent {}
 
class MoyuStarted extends MoyuEvent {
  final int time;
  final System os;
 
  MoyuStarted({required this.time, required this.os});
}
 
class MoyuProgressUpdated extends MoyuEvent {
  final int totalTime;
  final int progressTime;
 
  MoyuProgressUpdated(this.totalTime, this.progressTime);
}
 
class MoyuEnded extends MoyuEvent {
  MoyuEnded();
}

其中3個state (摸魚初始,正在摸魚,摸魚結束)

abstract class MoyuState {}
 
class MoyuInit extends MoyuState {}
 
class MoyuIng extends MoyuState {
  final double progress;
  final int progressTime;
 
  MoyuIng({required this.progress, required this.progressTime});
}
 
class MoyuFinish extends MoyuState {}

啟動摸魚使用, 記錄總時長和消耗時間,計算進度百分比,更新UI進度條 

下面是界面更新邏輯

BlocConsumer<MoYuBloc, MoyuState>(
          builder: (context, state) {
            if (state is MoyuIng) {
              final progress = state.progress;
 
              return _moyuIngView(progress);
            } else if (state is MoyuFinish) {
              return _replayView();
            }
            return const SizedBox();
          },
          listener: (context, state) {},
          listenWhen: (pre, cur) => pre != cur,
        ),

很簡單 最重要的是進度狀態,其次結束后是否重新摸魚按鈕

構建運行flutter應用

flutter run -d macos

 最后結果展示

怎么用flutter制作上班摸魚應用

怎么用flutter制作上班摸魚應用

看完了這篇文章,相信你對“怎么用flutter制作上班摸魚應用”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

四平市| 呼和浩特市| 名山县| 文成县| 浮山县| 湘阴县| 嵊泗县| 海盐县| 布拖县| 垦利县| 康乐县| 乐昌市| 白城市| 淳化县| 太湖县| 庆城县| 郑州市| 台东县| 平乡县| 南陵县| 广昌县| 炉霍县| 石门县| 洪雅县| 景泰县| 玉环县| 甘孜| 高台县| 兖州市| 彝良县| 开江县| 嘉禾县| 盱眙县| 福安市| 安徽省| 萨嘎县| 凤凰县| 台东市| 信宜市| 岚皋县| 漳浦县|