Stack(
children: <Widget>[
InkWell(
onTap: () => navigator.pop()
),
Align(
alignment: Alignment.bottomCenter,
child: IntrinsicHeight(
child: Container(
constraints: BoxConstraints(
maxHeight: MediaQuery.of(context).size.height - 56.0
), //maxHeight of the window - 56.0
decoration: BoxDecoration(...radius, background...),
child: SafeArea(
top: false,
child: Column(
children: <Widget>[
Row(
children: <Widget>[
// Title & close button
],
crossAxisAlignment: CrossAxisAlignment.start,
),
Expanded( //Use Expanded instead of Container
child: SingleChildScrollView(
padding: EdgeInsets.fromLTRB(...),
child: Center(
child: Column(
children: <Widget>[
CoreTextField(...),
CoreTextField(...),
CoreTextField(...),
CoreTextField(...),
CoreTextField(...),
CoreTextField(...),
CoreButton(...)
],
),
),
))
],
),
),
),
),
)
],
)
Используйте Expanded вместо Container
, Expanded
попытается использовать все доступное пространство, а затем SingleChildScrollView
будет прокручиваться в этом пространстве, если столбец не поместился
ОБНОВЛЕНИЕ
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
double height = MediaQuery.of(context).size.height;
double statusBar = MediaQuery.of(context).viewPadding.top;
double maxSize = (height -56.0 - statusBar)/height;
return Stack(
fit: StackFit.loose,
children: <Widget>[
InkWell(
onTap: () => null, //navigator.pop()
),
DraggableScrollableSheet(
maxChildSize: maxSize,
minChildSize: 0.3,// whatever value you want for the minimum, less than max
initialChildSize: maxSize,
//or if you don't want it fully expanded just give it a fraction of maxSize
//it has to be between maxChildSize and minChildSize
builder: (context, scrollController){
return Container(
decoration: BoxDecoration(...radius, background...),
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Row(
children: <Widget>[
// Title & close button
],
crossAxisAlignment: CrossAxisAlignment.start,
),
Expanded(
child: SingleChildScrollView(
controller: scrollController,
padding: EdgeInsets.fromLTRB(...),
child: Center(
child: Column(
children: <Widget>[
CoreTextField(...),
CoreTextField(...),
CoreTextField(...),
CoreTextField(...),
CoreTextField(...),
CoreTextField(...),
CoreButton(...)
],
),
),
))
],
),
);
},
)
],
);
}
}