badge_manager 1.0.0 badge_manager: ^1.0.0 copied to clipboard
BadgeManager is a corner marker setting tool. Currently supports iOS and Android (Samsung, Huawei, Xiaomi, etc.). If you need other functions, you can expand on this basis.
BadgeManager #
BadgeManager is a corner marker setting tool. Currently supports iOS and Android (Samsung, Huawei, Xiaomi, etc.). If you need other functions, you can expand on this basis.
Add dependency #
dependencies:
badge_manager: lastest version
Simple to use #
class _MyAppState extends State<MyApp> with WidgetsBindingObserver{
late TextEditingController controller;
String brandStr = "";
String supported = "";
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state);
switch (state) {
case AppLifecycleState.inactive: // 处于这种状态的应用程序应该假设它们可能在任何时候暂停。
break;
case AppLifecycleState.resumed: //从后台切换前台,界面可见
break;
case AppLifecycleState.paused: // 界面不可见,后台
setBadge();
break;
case AppLifecycleState.detached: // APP结束时调用
break;
}
}
@override
void initState() {
WidgetsBinding.instance?.addObserver(this);
controller = TextEditingController();
super.initState();
}
/// methodName isSupported
/// description 是否支持设置角标
/// date 2022/4/15 18:42
/// author waitwalker
void isSupported() async {
final bool value = await BadgeManager.isSupportedBadge();
setState(() {
supported = value ? "true" : "false";
});
}
/// methodName getBrand
/// description 获取手机品牌
/// date 2022/4/15 18:42
/// author waitwalker
void getBrand() async{
final String brand = await BadgeManager.getBrand();
setState(() {
brandStr = brand;
});
}
/// methodName setBadge
/// description 设置角标
/// date 2022/4/15 18:42
/// author waitwalker
void setBadge() async{
await BadgeManager.setBadge(count: int.parse(controller.text), title: "通知", content: "this is content");
}
/// methodName setBadge
/// description 移除角标
/// date 2022/4/15 18:42
/// author waitwalker
void removeBadge() async{
await BadgeManager.removeBadge();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
title: const Text('BadgeManager'),
),
resizeToAvoidBottomInset: false,
body: InkWell(
child: SafeArea(
child: SingleChildScrollView(
child: SizedBox(
child: Container(
alignment: Alignment.center,
color: Colors.white,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const Padding(padding: EdgeInsets.only(top: 30)),
Text("是否支持:" + supported),
const Padding(padding: EdgeInsets.only(top: 30)),
InkWell(
child: Container(
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.2),
offset: const Offset(0, 1),
blurRadius: 1.5,
spreadRadius: 2.5,),
],
color: Colors.green,
borderRadius: BorderRadius.circular(8.0),
),
alignment: Alignment.center,
height: 50,
width: 300,
child: const Text("点击查看是否支持",
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 18,
),
),
),
onTap: (){
FocusScope.of(context).requestFocus(FocusNode());
isSupported();
},
),
const Padding(padding: EdgeInsets.only(top: 30)),
Text("手机品牌:" + brandStr),
const Padding(padding: EdgeInsets.only(top: 30)),
InkWell(
child: Container(
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.2),
offset: const Offset(0, 1),
blurRadius: 1.5,
spreadRadius: 2.5,),
],
color: Colors.orange,
borderRadius: BorderRadius.circular(8.0),
),
alignment: Alignment.center,
height: 50,
width: 300,
child: const Text("点击获取手机品牌",
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 18,
),
),
),
onTap: (){
FocusScope.of(context).requestFocus(FocusNode());
getBrand();
},
),
const Padding(padding: EdgeInsets.only(top: 30)),
SizedBox(
height: 50,
width: 300,
child: CupertinoTextField(
controller: controller,
keyboardType: TextInputType.number,
placeholder: "请输入badge的数字",
),
),
const Padding(padding: EdgeInsets.only(top: 30)),
InkWell(
child: Container(
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.2),
offset: const Offset(0, 1),
blurRadius: 1.5,
spreadRadius: 2.5,),
],
color: Colors.lightBlue,
borderRadius: BorderRadius.circular(8.0),
),
alignment: Alignment.center,
height: 50,
width: 300,
child: const Text("点击设置角标",
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 18,
),
),
),
onTap: (){
if (controller.text.isNotEmpty) {
FocusScope.of(context).requestFocus(FocusNode());
setBadge();
} else {
Fluttertoast.showToast(msg: "请先输入badge count");
}
},
),
const Padding(padding: EdgeInsets.only(top: 30)),
InkWell(
child: Container(
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.2),
offset: const Offset(0, 1),
blurRadius: 1.5,
spreadRadius: 2.5,),
],
color: Colors.lime,
borderRadius: BorderRadius.circular(8.0),
),
alignment: Alignment.center,
height: 50,
width: 300,
child: const Text("点击移除角标",
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 18,
),
),
),
onTap: (){
FocusScope.of(context).requestFocus(FocusNode());
removeBadge();
},
),
const Padding(padding: EdgeInsets.only(top: 330)),
],
),
),
),
),
),
onTap: (){
FocusScope.of(context).requestFocus(FocusNode());
},
),
),
);
}
@override
void dispose() {
super.dispose();
WidgetsBinding.instance?.removeObserver(this);
}
}
Copyright & License #
This project is completely open source and the license is MIT. If you like, welcome star.
Features and bugs #
Please file feature requests and bugs at the issue tracker.
Flutter Technology and Other Communication Groups #
Scan QR code👇: