TimSim
TimSim

Reputation: 4036

Expanded widget in AppBar

I have an app bar where I want to have the title and then next to it a raised button that expands to fill the remaining horizontal space. I tried variations of this:

AppBar(
  title: Row(
    children: [
      Text("Select view"),
      // the row that follows is because it says Expanded widgets
      // should be put directly in Row or Column or Flex
      Padding(padding: EdgeInsets.only(left: 12.0), child: Row(children: [ 
        Expanded(child: RaisedButton(
          child: Text("view 1"),
          onPressed: () {
            // something
          },
        ),),
      ])),
    ]
  ),
);

For this I'm getting the following error:

I/flutter (26477): The following assertion was thrown during performLayout():

I/flutter (26477): The _ToolbarLayout custom multichild layout delegate forgot to lay out the following children:

I/flutter (26477): _ToolbarSlot.middle: RenderSemanticsAnnotations#6d937 NEEDS-LAYOUT NEEDS-PAINT

I/flutter (26477): _ToolbarSlot.middle: RenderSemanticsAnnotations#7fcd5 NEEDS-LAYOUT NEEDS-PAINT

I/flutter (26477): _ToolbarSlot.middle: RenderSemanticsAnnotations#f9a7a NEEDS-LAYOUT NEEDS-PAINT

I/flutter (26477): _ToolbarSlot.middle: RenderSemanticsAnnotations#ce1f2 NEEDS-LAYOUT NEEDS-PAINT

I/flutter (26477): Each child must be laid out exactly once.

Every other thing I tried was also throwing some assertion exception. I don't really care how I do it, I just want to have two widgets - the title and next to it a RaisedButton that fills the rest of the space in the app bar.

Upvotes: 2

Views: 4119

Answers (1)

Sami Kanafani
Sami Kanafani

Reputation: 15741

just remove the row that contains the RaisedButton

 appBar: AppBar(
          title: Row(children: [
            Text("Select view"),
            Expanded(
              child: RaisedButton(
                child: Text("view 1"),
                onPressed: () {
                  // something
                },
              ),
            ),
          ]),
        ),

Upvotes: 5

Related Questions