Flutter error:Failed assertion: line 1785 pos 12: 'hasSize'

Viewed 15831

I have a code of recording Audio in flutter. The code should work perfectly without errors, whenever I try to call it from an alert dialog I end up with an error

The following assertion was thrown during performLayout(): RenderShrinkWrappingViewport does not support returning intrinsic dimensions.

Calculating the intrinsic dimensions would require instantiating every child of the viewport, which defeats the point of viewports being lazy.

If you are merely trying to shrink-wrap the viewport in the main axis direction, you should be able to achieve that effect by just giving the viewport loose constraints, without needing to measure its intrinsic dimensions.

Am trying to pass an option to record audio to an alert dialog. Users to record audio from a pop up instead of a main screen. What am I doing wrong?

What i have so far

 Widget setupAlertDialoadContainer() {
    return ListView(
      shrinkWrap: true, //just set this property
      padding: const EdgeInsets.all(8.0),
      //children: listItems.toList(),
      children: <Widget>[
        Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Container(
              margin: EdgeInsets.only(top: 24.0, bottom: 16.0),
              child: Text(
                this._recorderTxt,
                style: TextStyle(
                  fontSize: 48.0,
                  color: Colors.black,
                ),
              ),
            ),
            _isRecording
                ? LinearProgressIndicator(
                    value: 100.0 / 160.0 * (this._dbLevel ?? 1) / 100,
                    valueColor: AlwaysStoppedAnimation<Color>(Colors.green),
                    backgroundColor: Colors.red,
                  )
                : Container()
          ],
        ),
        Row(
          children: <Widget>[
            Container(
              width: 56.0,
              height: 56.0,
              margin: EdgeInsets.all(10.0),
              child: FloatingActionButton(
                heroTag: "Record",
                onPressed: () {
                  if (!this._isRecording) {
                    return this.startRecorder();
                  }
                  this.stopRecorder();
                },
                child: this._isRecording ? Icon(Icons.stop) : Icon(Icons.mic),
              ),
            ),
          ],
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
        ),
        Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Container(
              margin: EdgeInsets.only(top: 60.0, bottom: 16.0),
              child: Text(
                this._playerTxt,
                style: TextStyle(
                  fontSize: 48.0,
                  color: Colors.black,
                ),
              ),
            ),
          ],
        ),
        Row(
          children: <Widget>[
            Container(
              width: 56.0,
              height: 56.0,
              margin: EdgeInsets.all(8.0),
              child: FloatingActionButton(
                heroTag: "Start",
                onPressed: () {
                  startPlayer();
                },
                child: Icon(Icons.play_arrow),
              ),
            ),
            Container(
              width: 56.0,
              height: 56.0,
              margin: EdgeInsets.all(8.0),
              child: FloatingActionButton(
                heroTag: "Pause",
                onPressed: () {
                  pausePlayer();
                },
                child: Icon(Icons.pause),
              ),
            ),
            Container(
              width: 56.0,
              height: 56.0,
              margin: EdgeInsets.all(8.0),
              child: FloatingActionButton(
                heroTag: "Stop",
                onPressed: () {
                  stopPlayer();
                },
                child: Icon(Icons.stop),
              ),
            ),
          ],
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
        ),
        Container(
            height: 56.0,
            child: Slider(
                value: slider_current_position,
                min: 0.0,
                max: max_duration,
                onChanged: (double value) async {
                  await flutterSound.seekToPlayer(value.toInt());
                },
                divisions: max_duration.toInt()))
      ],
    );
  }

How am passing the data to the Alert dialog

showDialog(
                        context: context,
                        builder: (BuildContext context) {
                          return AlertDialog(
                            title: Text('Record the data collection'),
                            content: setupAlertDialoadContainer(),
                          );
                        });
1 Answers

is the error is showing when alert box is opened?? if yes my suggestion is using

showDialog(
                        context: context,
                        builder: (BuildContext context) {
                          return AlertDialog(
                            title: Text('Record the data collection'),
                            content: Container(
                                       child:setupAlertDialoadContainer(),
                                       height:200,
                                       width:200,
                                      ),
                          );
                        });

change the width and height of container according to your need

Related