import 'package:flutter/material.dart';
void main() => runApp(
MaterialApp(
title: 'Flight Mock Mock UP',
debugShowCheckedModeBanner: false,
home: HomeScreen(),
),
);
class HomeScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
HomeScreenTopPart(),
],
),
);
}
}
class HomeScreenTopPart extends StatefulWidget {
@override
_HomeScreenTopPartState createState() => _HomeScreenTopPartState();
}
class _HomeScreenTopPartState extends State<HomeScreenTopPart> {
@override
Widget build(BuildContext context) {
return Stack(
children: [
ClipPath(
clipper: CustomShapeClipper(),
child: Container(
height: 400.0,
color: Colors.orange,
),
),
],
);
}
}
/* CustomClipper */
class CustomShapeClipper extends CustomClipper<Path> {
@override
Path getClip(Size size) {
final Path path = Path();
path.lineTo(0.0, size.height);
var firstEndPoint = Offset(size.width * 0.5, size.height - 30.0);
var firstControlPoint = Offset(size.width * 0.25, size.height - 50.0);
path.quadraticBezierTo(firstControlPoint.dx, firstControlPoint.dy,
firstEndPoint.dx, firstEndPoint.dy);
var secondEndPoint = Offset(size.width, size.height - 80);
var secondControlPoint = Offset(size.width * 0.75, size.height - 10.0);
path.quadraticBezierTo(secondControlPoint.dx, secondControlPoint.dy,
secondEndPoint.dx, secondEndPoint.dy);
path.lineTo(size.width, size.height);
path.lineTo(size.width, 0);
path.close();
return path;
}
@override
bool shouldReclip(CustomClipper oldClipper) => true;
}
Output:
0 comments:
Post a Comment