質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Darknet

Darknetは、C言語で記述されたオープンソースのニューラルネットフレームワークで簡単にインストールすることが可能です。学習済みモデルとアルゴリズムも配布しており、ダウンロードすれば容易に動かすこともできます。

解決済

FlutterでListView.builderの中にListView.builderを入れたいです

9nahito
9nahito

総合スコア40

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Darknet

Darknetは、C言語で記述されたオープンソースのニューラルネットフレームワークで簡単にインストールすることが可能です。学習済みモデルとアルゴリズムも配布しており、ダウンロードすれば容易に動かすこともできます。

1回答

0リアクション

0クリップ

142閲覧

投稿2022/09/17 10:59

編集2022/09/18 09:48

実現したいこと

Flutterで ListView.builder の中に さらに、ListView.builder を入れたいです!
Flutterでカレンダーのようなシステムを作っています。
scrollDirection: Axis.horizontal,で横並びに指定したListView.builder のそれぞれの中に 縦並びのListView.builderを入れようと思っています!

追記: 解決しました!

ta.fu さんのコードをもとにして GridView の中に ListView を入れることで解決しました。
イメージ説明

dart

import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; void main() => runApp(const MyApp()); class MyApp extends StatelessWidget { const MyApp({super.key}); // This widget is the root of your application. Widget build(BuildContext context) { return MaterialApp(//return MaterialAppはアプリ内で1つ home: calender() ); } } class calender extends StatefulWidget { const calender({Key? key}) : super(key: key); State<calender> createState() => calenderState(); } List<String> days = ["月","火","水","木","金","土","日"]; class calenderState extends State<calender> { Widget build(BuildContext context) { return Scaffold( body:Column( //Expandedの親はColumnかRow children: [ Expanded( child: Row( children: [ const Text("Row"), Expanded( child: GridView.builder( itemCount: 7, itemBuilder: (context, index) { String today = days[index]; return Column( children: [ Text(today), Expanded(child: ListView.builder( itemCount: 24, itemBuilder: (context,index){ return Container( child: Text("$index:00"), ); }),) ], ); }, gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 7, ), ), ), ], ), ), ], ) ); } }

発生している問題・エラーメッセージ

EDS-COMPOSITING-BITS-UPDATE //の後に以下の内容と同じ内容のエラーがいくつも出ています。そのため長すぎるエラーになるためその同じ中の一つを抜粋させてもらいます。 The following assertion was thrown during performLayout(): RenderBox was not laid out: RenderPointerListener#068ee relayoutBoundary=up15 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE 'package:flutter/src/rendering/box.dart': Failed assertion: line 2001 pos 12: 'hasSize' Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause. In either case, please report this assertion by filing a bug on GitHub: https://github.com/flutter/flutter/issues/new?template=2_bug.md The relevant error-causing widget was: ListView ListView:file:///C:/Users/inohi/StudioProjects/test6/lib/main.dart:41:42 When the exception was thrown, this was the stack: #2 RenderBox.size (package:flutter/src/rendering/box.dart:2001:12) #3 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:121:21) #4 RenderObject.layout (package:flutter/src/rendering/object.dart:2135:7) #5 RenderBox.layout (package:flutter/src/rendering/box.dart:2418:11) #6 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14) #7 RenderObject.layout (package:flutter/src/rendering/object.dart:2135:7) #8 RenderBox.layout (package:flutter/src/rendering/box.dart:2418:11) #9 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14) #10 RenderObject.layout (package:flutter/src/rendering/object.dart:2135:7) ---# は省略させてもらいます。 (elided 6 frames from class _AssertionError, class _RawReceivePortImpl, class _Timer, and dart:async-patch) The following RenderObject was being processed when the exception was fired: RenderSemanticsGestureHandler#a73c0 relayoutBoundary=up14 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE ... parentData: <none> (can use size) ... constraints: BoxConstraints(0.0<=w<=Infinity, h=681.0) ... size: MISSING ... behavior: opaque ... gestures: <none> RenderObject: RenderSemanticsGestureHandler#a73c0 relayoutBoundary=up14 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE parentData: <none> (can use size) constraints: BoxConstraints(0.0<=w<=Infinity, h=681.0) size: MISSING behavior: opaque gestures: <none> ... child: RenderPointerListener#068ee relayoutBoundary=up15 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE ... parentData: <none> (can use size) ... constraints: BoxConstraints(0.0<=w<=Infinity, h=681.0) ... size: MISSING ... behavior: opaque ... listeners: down, panZoomStart ... child: RenderSemanticsAnnotations#f1cb4 relayoutBoundary=up16 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE ... parentData: <none> (can use size) ... constraints: BoxConstraints(0.0<=w<=Infinity, h=681.0) ... size: MISSING ... child: RenderIgnorePointer#dd22f relayoutBoundary=up17 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE ... parentData: <none> (can use size) ... constraints: BoxConstraints(0.0<=w<=Infinity, h=681.0) ... size: MISSING ... ignoring: false ... ignoringSemantics: false ... child: RenderViewport#b5460 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE ... needs compositing ... parentData: <none> (can use size) ... constraints: BoxConstraints(0.0<=w<=Infinity, h=681.0) ... size: MISSING ... axisDirection: down ... crossAxisDirection: right ... offset: ScrollPositionWithSingleContext#f1581(offset: 0.0, range: null..null, viewport: null, ScrollableState, AlwaysScrollableScrollPhysics -> ClampingScrollPhysics -> RangeMaintainingScrollPhysics, IdleScrollActivity#37b94, ScrollDirection.idle) ... anchor: 0.0

エラーが起きたソースコード

dart

import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; void main() => runApp(const MyApp()); class MyApp extends StatelessWidget { const MyApp({super.key}); // This widget is the root of your application. Widget build(BuildContext context) { return MaterialApp(//return MaterialAppはアプリ内で1つ home: calender() ); } } class calender extends StatefulWidget { const calender({Key? key}) : super(key: key); State<calender> createState() => calenderState(); } class calenderState extends State<calender> { Widget build(BuildContext context) { return Scaffold( body:Column(//Expandedの親はColumnかRow children: [ Expanded(child: Row( children: [ Text("Row"), Expanded(child: ListView.builder( scrollDirection: Axis.horizontal, itemCount: 7, itemBuilder: (context,index){ return Column(children: [ Expanded( child:ListView.builder( itemCount:1, itemBuilder: (context,index){ return Container( child:Text("縦の内容"), ); }) ) ],); } ),), ], ),), ], ) ); } }

試したこと

エラーにFailed assertion: line 2001 pos 12: 'hasSize'書いてあったので調べるとエラーの原因になっている要素をExpanded()で囲むと治ると書いてあったので、2つのListView.BuilderをExpanded()で囲んでみました。下の階層のほう(scrollDirection: Axis.horizontal,がない縦並び)のListView.Builderを削除し、横並びのListView.builderのみにするとエラーなく動作しています。

補足情報(FW/ツールのバージョンなど)

Flutter version 3.3.0 を使用しています。

回答よろしくお願いします!

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Darknet

Darknetは、C言語で記述されたオープンソースのニューラルネットフレームワークで簡単にインストールすることが可能です。学習済みモデルとアルゴリズムも配布しており、ダウンロードすれば容易に動かすこともできます。