teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

2021/11/12 22:28

投稿

massanmesu
massanmesu

スコア36

title CHANGED
@@ -1,1 +1,1 @@
1
- Flutter: 非同期処理をキャンセルするためのCancelToken実行されるのに処理が続いている
1
+ DioパッケージのCancelTokenのcancel()を実行してもAPI通信が中断され
body CHANGED
File without changes

1

追記

2021/11/12 22:27

投稿

massanmesu
massanmesu

スコア36

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- 2種類のAPI通信をFutureProvider.autoDisposeに書いています。
3
+ 2種類のAPI通信を`FutureProvider.autoDispose`に書いています。
4
4
  ```
5
5
  final getLibraryProvider =
6
6
  FutureProvider.autoDispose<List<ShowLibrary>>((ref) async {
@@ -22,31 +22,32 @@
22
22
  });
23
23
  ```
24
24
 
25
- 画面遷移したら実行され、popしたら処理を中断する、という動作を期待しています。
25
+ 画面遷移したら実行され、`pop`したら処理を中断する、という動作を期待しています。
26
- 前の画面のTextButtonのonPressで画面遷移と同時に_isbnの値が更新され、それを検知し以降の処理を実行する狙いです。
26
+ 前の画面の`TextButton``onPress`で画面遷移と同時に`_isbn`の値が更新され、それを検知し以降の処理を実行する狙いです。
27
27
  一つのトークンで全ての処理が中断される、という認識です。
28
28
 
29
29
  ### 発生している問題
30
- popしてもキャンセルされず処理が続いてしまいます。
30
+ `pop`してもキャンセルされず処理が続いてしまいます。`onDispose`内の処理は実行されるのにキャンセルがされない状況です(`print()`で出力した文字列は確認できました)。
31
31
 
32
32
  ### 試したこと
33
- ・レポジトリではなくProvider内に直接処理を書いて実行→変化なし
33
+ ・レポジトリではなくFutureProvider.autoDispose`内に直接処理を書いて実行→変化なし
34
- ・レポジトリにキャンセルされたかどうかを表すisCanceledというbool値を入れ、通信2に入る前にtrueならばnullを返す。⇨ キャンセルされたら必ずnullが入るのが嫌なのと、あえて複雑なやり方をしている気がするためやめました。
35
34
 
35
+ ・レポジトリにキャンセルされたかどうかを表す`isCanceled`というbool値を入れ、通信2に入る前に`true`ならば`null`を返す。⇨ キャンセルされたら必ず`null`が入るのが個人的に嫌なのと、あえて複雑なやり方をしている気がするためやめました。
36
+
36
37
  ### 注意点
37
38
  レポジトリ内のコードが大量にあるため混乱を招くと思い、書いておりません。
38
39
  コメントいただければ追記いたします。
39
40
  ### 補足情報(FW/ツールのバージョンなど)
40
41
  ```
41
42
  [✓] Flutter (Channel master, 2.6.0-12.0.pre.522, on macOS 11.6 20G165 darwin-x64, locale ja-JP)
42
- • Flutter version 2.6.0-12.0.pre.522 at /Users/kudokoki/flutter_dev/flutter
43
+ • Flutter version 2.6.0-12.0.pre.522 at /Users/username/flutter_dev/flutter
43
44
  • Upstream repository https://github.com/flutter/flutter.git
44
45
  • Framework revision 78689d347c (2 weeks ago), 2021-10-29 08:33:41 +0200
45
46
  • Engine revision ddf4bd598e
46
47
  • Dart version 2.15.0 (build 2.15.0-262.0.dev)
47
48
 
48
49
  [✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
49
- • Android SDK at /Users/kudokoki/Library/Android/sdk
50
+ • Android SDK at /Users/username/Library/Android/sdk
50
51
  • Platform android-31, build-tools 31.0.0
51
52
  • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
52
53
  • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)
@@ -70,7 +71,7 @@
70
71
  • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)
71
72
 
72
73
  [✓] VS Code (version 1.47.3)
73
- • VS Code at /Users/kudokoki/Applications/Visual Studio Code.app/Contents
74
+ • VS Code at /Users/username/Applications/Visual Studio Code.app/Contents
74
75
  • Flutter extension can be installed from:
75
76
  ???? https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
76
77