Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'dart:async';
- import 'package:rxdart/rxdart.dart';
- void main() {
- final katakanaData = {'イチゴ': '苺', 'イチジク': '無花果', 'ミカン': '蜜柑'};
- final englishData = {'strawberry': '苺', 'orange': '蜜柑'};
- //Sink
- final katakanaController = StreamController<String>();
- final englishController = StreamController<String>();
- //Stream
- final kanjisStream = BehaviorSubject<List<String>>(seedValue: List<String>());
- transformToKanjiFromKatakana(String katakana) async {
- if (katakanaData.containsKey(katakana)) {
- final searchResult = katakanaData[katakana];
- final kanjis = kanjisStream.value;
- kanjis.add(searchResult);
- kanjisStream.add(kanjis);
- return;
- }
- print('$katakanaの漢字は不明です');
- }
- transformToKanjiFromEnglish(String englishWord) async {
- if (englishData.containsKey(englishWord)) {
- final searchResult = englishData[englishWord];
- final kanjis = kanjisStream.value;
- kanjis.add(searchResult);
- kanjisStream.add(kanjis);
- return;
- }
- print('$englishWordの漢字は不明です');
- }
- kanjisStream.stream.listen((kanjis) {
- if (kanjis.isEmpty) {
- return;
- }
- print('==検索結果一覧==');
- kanjis.forEach((kanji) {
- print(kanji);
- });
- });
- katakanaController.stream.listen(transformToKanjiFromKatakana);
- englishController.stream.listen(transformToKanjiFromEnglish);
- _search() async {
- katakanaController.sink.add('イチゴ');
- await Future.delayed(Duration(milliseconds: 200)).then((_) {
- katakanaController.sink.add('イチジク');
- });
- await Future.delayed(Duration(milliseconds: 200)).then((_) {
- katakanaController.sink.add('ミカン');
- });
- await Future.delayed(Duration(milliseconds: 200)).then((_) {
- katakanaController.sink.add('ドラゴンフルーツ');
- });
- await Future.delayed(Duration(milliseconds: 200)).then((_) {
- englishController.sink.add('strawberry');
- });
- await Future.delayed(Duration(milliseconds: 200)).then((_) {
- englishController.sink.add('orange');
- });
- await Future.delayed(Duration(milliseconds: 200)).then((_) {
- englishController.sink.add('kiwi-fruit');
- });
- }
- _search();
- }
Add Comment
Please, Sign In to add comment