Reputation: 31
I am following along this tutorial and I ran into a problem. I have a main container and within the main container there's a column. Inside the column, there are various elements and at the end there's an extended container that creates an overlapping effect. However, the problem is that the extended container does not cover the remaining rest of the device height, and it leaves a space towards the end showing the background of the parent container. I'm new to flutter so I'm now learning the syntax, I've tried doubling the height of the expanded container but that did not work. How can I fix this?
import 'package:flutter/material.dart';
class LoginScreen extends StatefulWidget {
@override
_LoginScreenState createState() => _LoginScreenState();
}
class _LoginScreenState extends State<LoginScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
padding: EdgeInsets.symmetric(vertical: 30.0),
width: double.infinity,
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
colors: [
Colors.blue[900],
Colors.blue[500],
Colors.blue[400],
],
),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(height: 40.0),
Padding(
padding: EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
"Eazy",
style: TextStyle(
color: Colors.white,
fontSize: 40.0,
fontWeight: FontWeight.w400,
),
),
Text(
"Bank",
style: TextStyle(
color: Colors.white,
fontSize: 40.0,
fontWeight: FontWeight.w400,
),
),
],
),
),
SizedBox(
height: 10.0,
),
Expanded(
child: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(60),
topRight: Radius.circular(60),
),
),
),
),
],
),
),
);
}
}
Upvotes: 0
Views: 743
Reputation: 14043
The issue is with the padding: EdgeInsets.symmetric(vertical: 30.0)
, the padding
takes a value of 30.0 logical pixels
for both vertical directions(top and down).
You can fix that by using the padding: EdgeInsets.only(top: 30.0)
which only gives padding to the top
of the container.
I added a demo using your widget tree as an example:
import 'package:flutter/material.dart';
class LoginScreen extends StatefulWidget {
@override
_LoginScreenState createState() => _LoginScreenState();
}
class _LoginScreenState extends State<LoginScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
padding: EdgeInsets.only(top: 30.0), // new line
width: double.infinity,
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
colors: [
Colors.blue[900],
Colors.blue[500],
Colors.blue[400],
],
),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(height: 40.0),
Padding(
padding: EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
"Eazy",
style: TextStyle(
color: Colors.white,
fontSize: 40.0,
fontWeight: FontWeight.w400,
),
),
Text(
"Bank",
style: TextStyle(
color: Colors.white,
fontSize: 40.0,
fontWeight: FontWeight.w400,
),
),
],
),
),
SizedBox(
height: 10.0,
),
Expanded(
child: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(60),
topRight: Radius.circular(60),
),
),
),
),
],
),
),
);
}
}
Upvotes: 1