import 'package:flutter/material.dart';
import 'package:flutter_android/component/waterMarker/WatermarkWidget.dart';
class TextWaterMarkPainterWidget extends StatefulWidget {
const TextWaterMarkPainterWidget({Key? key, required this.title})
: super(key: key);
final String title;
@override
State<TextWaterMarkPainterWidget> createState() {
return TextWaterMarkPainterState();
}
}
class TextWaterMarkPainterState extends State<TextWaterMarkPainterWidget> {
OverlayEntry? overlayEntry;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text(widget.title)),
body: Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
ElevatedButton(
child: const Padding(
padding: EdgeInsets.all(10.0),
child: Text("添加水印"),
),
onPressed: () {
addWaterMarkter(context, "仅供参考,禁止传播", 2, 10);
},
),
ElevatedButton(
child: const Padding(
padding: EdgeInsets.all(10.0),
child: Text("移除水印"),
),
onPressed: () {
removeWatermark();
},
),
],
),
),
);
}
//默认水印
void addWaterMarkter(BuildContext context, String string, int row, int column) async {
OverlayState? overlayState = Overlay.of(context);
overlayEntry = OverlayEntry(
builder: (context) => WatermarkWidget(
rowCount: row,
columnCount: column,
text: string,
textStyle:
const TextStyle(
color: Color(0x09000000),
fontSize: 16,
decoration: TextDecoration.none),
));
overlayState?.insert(overlayEntry!);
}
/// 移除水印
void removeWatermark() async {
if (overlayEntry != null) {
overlayEntry!.remove();
overlayEntry = null;
}
}
}
import 'dart:math';
import 'package:flutter/cupertino.dart';
class WatermarkWidget extends StatelessWidget{
final int rowCount;
final int columnCount;
final String text;
final TextStyle textStyle;
const WatermarkWidget({
Key? key,
required this.rowCount,
required this.columnCount,
required this.text,
required this.textStyle,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return IgnorePointer(
child: Column(
children: creatColumnWidgets(),
),
);
}
List<Widget> creatRowWdiges() {
List<Widget> list = [];
for (var i = 0; i < rowCount; i++) {
final widget = Expanded(
child: Center(
child: Transform.rotate(
angle: pi / 10, child: Text(text, style: textStyle))));
list.add(widget);
}
return list;
}
List<Widget> creatColumnWidgets() {
List<Widget> list = [];
for (var i = 0; i < columnCount; i++) {
final widget = Expanded(
child: Row(
children: creatRowWdiges(),
));
list.add(widget);
}
return list;
}
}