diff --git a/lib/main.dart b/lib/main.dart index fd2fc6b..de1ede4 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'counter/counter_page.dart'; import 'guess/guess_page.dart'; import 'muyu/muyu_page.dart'; +import 'paper/paper.dart'; void main() { runApp(const MyApp()); @@ -19,7 +20,7 @@ class MyApp extends StatelessWidget { theme: ThemeData( primarySwatch: Colors.blue, ), - home: const MuyuPage(), + home: const Paper(), ); } } diff --git a/lib/paper/paper.dart b/lib/paper/paper.dart new file mode 100644 index 0000000..866fc7b --- /dev/null +++ b/lib/paper/paper.dart @@ -0,0 +1,51 @@ +import 'dart:ui'; + +import 'package:flutter/material.dart'; + + +import 'paper_app_bar.dart'; + +class Paper extends StatefulWidget { + const Paper({Key? key}) : super(key: key); + + @override + State createState() => _PaperState(); +} + +class _PaperState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: PaperAppBar(onClear: _clear,), + body: CustomPaint( + painter: PaperPainter(), + child: ConstrainedBox(constraints: const BoxConstraints.expand()), + ), + ); + } + + void _clear() { + + } +} + +class PaperPainter extends CustomPainter{ + + @override + void paint(Canvas canvas, Size size) { + List points = const [ + Offset(100,100), + Offset(100,150), + Offset(150,150), + Offset(200,100), + ]; + + Paint paint = Paint(); + paint.strokeWidth = 10; + canvas.drawPoints(PointMode.polygon, points , paint); + } + + @override + bool shouldRepaint(covariant CustomPainter oldDelegate) => true; + +} \ No newline at end of file diff --git a/lib/paper/paper_app_bar.dart b/lib/paper/paper_app_bar.dart new file mode 100644 index 0000000..0aea897 --- /dev/null +++ b/lib/paper/paper_app_bar.dart @@ -0,0 +1,41 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +class PaperAppBar extends StatelessWidget implements PreferredSizeWidget { + final VoidCallback onClear; + + const PaperAppBar({ + Key? key, + required this.onClear, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return AppBar( + centerTitle: true, + elevation: 0, + systemOverlayStyle: const SystemUiOverlayStyle( + statusBarIconBrightness: Brightness.dark, + statusBarColor: Colors.transparent), + backgroundColor: Colors.white, + title: Text( + '画板绘制', + style: TextStyle(color: Colors.black, fontSize: 16), + ), + actions: [ + IconButton( + splashRadius: 20, + onPressed: onClear, + icon: Icon( + CupertinoIcons.delete, + color: Colors.black, + size: 20, + )) + ], + ); + } + + @override + Size get preferredSize => const Size.fromHeight(kToolbarHeight); +}