[解決済み] Flutter : Bad state: ストリームは既に聴かれています
2023-03-09 15:09:52
質問
class MyPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: 2,
child: new Scaffold(
appBar: TabBar(
tabs: [
Tab(child: Text("MY INFORMATION",style: TextStyle(color: Colors.black54),)),
Tab(child: Text("WEB CALENDER",style: TextStyle(color: Colors.black54),)),
],
),
body:PersonalInformationBlocProvider(
movieBloc: PersonalInformationBloc(),
child: TabBarView(
children: [
MyInformation(),
new SmallCalendarExample(),
],
),
),
),
);
}
}
class MyInformation extends StatelessWidget{
// TODO: implement build
var deviceSize;
//Column1
Widget profileColumn(PersonalInformation snapshot) => Container(
height: deviceSize.height * 0.24,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Container(
decoration: BoxDecoration(
borderRadius:
new BorderRadius.all(new Radius.circular(50.0)),
border: new Border.all(
color: Colors.black,
width: 4.0,
),
),
child: CircleAvatar(
backgroundImage: NetworkImage(
"http://www.binaythapa.com.np/img/me.jpg"),
foregroundColor: Colors.white,
backgroundColor: Colors.white,
radius: 40.0,
),
),
ProfileTile(
title: snapshot.firstName,
subtitle: "Developer",
),
SizedBox(
height: 10.0,
),
],
)
],
),
);
Widget bodyData(PersonalInformation snapshot) {
return SingleChildScrollView(
child: Column(
children: <Widget>[
profileColumn(snapshot)
],
),
);
}
@override
Widget build(BuildContext context) {
final personalInformationBloc = PersonalInformationBlocProvider.of(context);
deviceSize = MediaQuery.of(context).size;
return StreamBuilder(
stream: personalInformationBloc.results,
builder: (context,snapshot){
if (!snapshot.hasData)
return Center(
child: CircularProgressIndicator(),
);
return bodyData(snapshot.data);
}
);
}
}
Rest APIからのデータ取得にBlocパターンを使用しています(JSONからオブジェクト全体を呼び出し、ユーザー名のみをパースしています)。ページはMyInformationとSmallCalendarの2つのタブで構成されています。アプリを実行すると、データは正しく取得され、すべてが順調です。タブ2に移動してタブ1に戻ると、タブ1の画面全体が赤くなり、エラーが表示されます。
Bad state: Stream has already been listened to.
どのように解決するのですか?
コントローラを一括で廃棄していないことが原因でした。
void dispose() {
monthChangedController.close();
dayPressedController.close();
resultController.close();
}
関連
-
[解決済み】ダーツのダブルドット(.)の使い方をリストアップしてみる?
-
[解決済み] dartでenumにメソッドや値を追加する
-
[解決済み] タイムスタンプの変換
-
[解決済み] ローカルフラッターパッケージを別のフラッターアプリケーションで使用するには?
-
[解決済み] DartでListを等しく比較するにはどうしたらいいですか?
-
[解決済み] DartのNULLチェックのイディオムやベストプラクティスは何ですか?
-
[解決済み] スクロールグローを消すには?
-
[解決済み] Dartでプライベート変数を作成する方法は?
-
[解決済み] textFieldのアンダーラインの色を変更するには?
-
[解決済み] 文字列から列挙
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] FlutterのBuildキャッシュをクリアする方法は?
-
[解決済み] "extends" 対 "implements" 対 "with" (拡張する)。
-
[解決済み] TextFieldのBorder Colorを変更できない。
-
[解決済み] タイムスタンプの変換
-
[解決済み] ローカルフラッターパッケージを別のフラッターアプリケーションで使用するには?
-
[解決済み] DartのNULLチェックのイディオムやベストプラクティスは何ですか?
-
[解決済み] スクロールグローを消すには?
-
[解決済み] Dartのグローバル変数
-
[解決済み] Flutter (Dart) アプリにタップでクリップボードにコピーする機能を追加するには?
-
[解決済み] Flutterでのテキストフィールドの検証