Skip to content
This repository has been archived by the owner on Feb 23, 2023. It is now read-only.

Stopwatchについて #2

Open
okaryo opened this issue Mar 12, 2022 · 8 comments
Open

Stopwatchについて #2

okaryo opened this issue Mar 12, 2022 · 8 comments

Comments

@okaryo
Copy link
Owner

okaryo commented Mar 12, 2022

機能

  • 一般的なストップウォッチ
  • UIは提供せず、値だけ返す
  • アプリのライフサイクルに対応するストップウォッチ
    • アプリをバックグラウンドにし、アプリに復帰してもストップウォッチはカウントアップし続けている(ように見える)

API

start

  • ストップウォッチが1秒ごとにカウントアップ

stop

  • ストップウォッチがストップ

reset

  • ストップウォッチの値がリセット
@okaryo
Copy link
Owner Author

okaryo commented Mar 12, 2022

Widgetは提供せずに値とストップウォッチに対する操作だけAPIとして公開しようと思ったけど、それだとViewの更新が難しいのでは?

ストップウォッチ部分だけラップするようなWidgetを提供する方が良いのでは?

// 使用例
    return FlutterLifecycleStopwatch(
      controller: _stopwatchController,
      initialSeconds: 0,
      duration: 1,
      builder: (duration) {
        ...
      }
    );

// controller.start()とかって感じでcontrollerに対してストップウォッチの操作をする、みたいな

@okaryo
Copy link
Owner Author

okaryo commented Mar 12, 2022

それか、onTickみたいなAPIを用意するか

stopwatch.onTick((time) => callback());

@okaryo
Copy link
Owner Author

okaryo commented Mar 13, 2022

Widgetは提供せずに値とストップウォッチに対する操作だけAPIとして公開しようと思ったけど、それだとViewの更新が難しいのでは?

ストップウォッチ部分だけラップするようなWidgetを提供する方が良いのでは?

// 使用例
    return FlutterLifecycleStopwatch(
      controller: _stopwatchController,
      initialSeconds: 0,
      duration: 1,
      builder: (duration) {
        ...
      }
    );

// controller.start()とかって感じでcontrollerに対してストップウォッチの操作をする、みたいな

結局はこっちになるのかなあと頭の片隅で思いながらも、まずは動くコードを作ってから詰めていくか

シンプルなAPIのみ欲しい場合はcontrollerだけ使う、みたいな

@okaryo
Copy link
Owner Author

okaryo commented Mar 13, 2022

Widgetは提供せずに値とストップウォッチに対する操作だけAPIとして公開しようと思ったけど、それだとViewの更新が難しいのでは?
ストップウォッチ部分だけラップするようなWidgetを提供する方が良いのでは?

// 使用例
    return FlutterLifecycleStopwatch(
      controller: _stopwatchController,
      initialSeconds: 0,
      duration: 1,
      builder: (duration) {
        ...
      }
    );

// controller.start()とかって感じでcontrollerに対してストップウォッチの操作をする、みたいな

結局はこっちになるのかなあと頭の片隅で思いながらも、まずは動くコードを作ってから詰めていくか

シンプルなAPIのみ欲しい場合はcontrollerだけ使う、みたいな

やっぱこれだなあ

そうでないとUIの更新のためにヘンテコなコードになる

  @override
  void initState() {
    super.initState();

    _stopwatch = FlutterLifecycleStopwatch(
      () => {this.setState(() => {})},
    );
  }

リセットした時とかにonTickでは対応できないし

@okaryo
Copy link
Owner Author

okaryo commented Mar 13, 2022

onTickではなくonChangeみたいにすればいいか

できるだけシンプルにし、使い方はクライアントに任せるってスタイル

@okaryo
Copy link
Owner Author

okaryo commented Mar 13, 2022

とりあえずストップウォッチ機能を作り切ってリリースしよう
その後は小さく改善していく

残りのToDo

  • バックグラウンドになってもストップウォッチが動き続ける(ように見える)ようにする
  • テスト書く

@okaryo
Copy link
Owner Author

okaryo commented Apr 29, 2022

久々に再開😎

@okaryo
Copy link
Owner Author

okaryo commented Apr 29, 2022

これ、Streamを返すAPI提供しないとクライアント側で使いにくくね?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant