Guest User

Untitled

a guest
Jan 24th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. import 'dart:async';
  2. import 'package:rxdart/rxdart.dart';
  3.  
  4. void main() {
  5. final katakanaData = {'イチゴ': '苺', 'イチジク': '無花果', 'ミカン': '蜜柑'};
  6. final englishData = {'strawberry': '苺', 'orange': '蜜柑'};
  7.  
  8. //Sink
  9. final katakanaController = StreamController<String>();
  10. final englishController = StreamController<String>();
  11. //Stream
  12. final kanjisStream = BehaviorSubject<List<String>>(seedValue: List<String>());
  13.  
  14. transformToKanjiFromKatakana(String katakana) async {
  15. if (katakanaData.containsKey(katakana)) {
  16. final searchResult = katakanaData[katakana];
  17.  
  18. final kanjis = kanjisStream.value;
  19. kanjis.add(searchResult);
  20.  
  21. kanjisStream.add(kanjis);
  22. return;
  23. }
  24. print('$katakanaの漢字は不明です');
  25. }
  26.  
  27. transformToKanjiFromEnglish(String englishWord) async {
  28. if (englishData.containsKey(englishWord)) {
  29. final searchResult = englishData[englishWord];
  30.  
  31. final kanjis = kanjisStream.value;
  32. kanjis.add(searchResult);
  33.  
  34. kanjisStream.add(kanjis);
  35. return;
  36. }
  37. print('$englishWordの漢字は不明です');
  38. }
  39.  
  40. kanjisStream.stream.listen((kanjis) {
  41. if (kanjis.isEmpty) {
  42. return;
  43. }
  44. print('==検索結果一覧==');
  45. kanjis.forEach((kanji) {
  46. print(kanji);
  47. });
  48. });
  49.  
  50. katakanaController.stream.listen(transformToKanjiFromKatakana);
  51. englishController.stream.listen(transformToKanjiFromEnglish);
  52.  
  53. _search() async {
  54. katakanaController.sink.add('イチゴ');
  55.  
  56. await Future.delayed(Duration(milliseconds: 200)).then((_) {
  57. katakanaController.sink.add('イチジク');
  58. });
  59. await Future.delayed(Duration(milliseconds: 200)).then((_) {
  60. katakanaController.sink.add('ミカン');
  61. });
  62. await Future.delayed(Duration(milliseconds: 200)).then((_) {
  63. katakanaController.sink.add('ドラゴンフルーツ');
  64. });
  65. await Future.delayed(Duration(milliseconds: 200)).then((_) {
  66. englishController.sink.add('strawberry');
  67. });
  68. await Future.delayed(Duration(milliseconds: 200)).then((_) {
  69. englishController.sink.add('orange');
  70. });
  71. await Future.delayed(Duration(milliseconds: 200)).then((_) {
  72. englishController.sink.add('kiwi-fruit');
  73. });
  74. }
  75.  
  76. _search();
  77. }
Add Comment
Please, Sign In to add comment