绘制点集

This commit is contained in:
toly
2023-05-06 08:23:51 +08:00
parent 82cf031835
commit 81d001c3ef
3 changed files with 94 additions and 1 deletions

View File

@@ -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(),
);
}
}

51
lib/paper/paper.dart Normal file
View File

@@ -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<Paper> createState() => _PaperState();
}
class _PaperState extends State<Paper> {
@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<Offset> 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;
}

View File

@@ -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);
}