Skip to content

Commit 2531456

Browse files
committed
右键菜单添加文件时增加重复文件弹窗提醒
1 parent c4e4760 commit 2531456

4 files changed

Lines changed: 27 additions & 5 deletions

File tree

lib/main.dart

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import 'dart:io';
44
import 'dart:typed_data';
55

66
import 'package:adb_tools/providers/app_provider.dart';
7+
import 'package:adb_tools/utils/dialog_utils.dart';
78
import 'package:adb_tools/utils/setup.dart';
89
import 'package:cross_file/cross_file.dart';
910
import 'package:flutter/material.dart';
@@ -83,7 +84,8 @@ class _MainAppState extends ConsumerState<MainApp> {
8384
// 监听端口
8485
if (server != null) {
8586
server?.listen((client) {
86-
debugPrint("收到连接: ${client.remoteAddress.address}:${client.remotePort}");
87+
debugPrint(
88+
"收到连接: ${client.remoteAddress.address}:${client.remotePort}");
8789
client.transform(StreamTransformer.fromHandlers(
8890
handleData: (Uint8List data, EventSink<String> sink) {
8991
sink.add(utf8.decode(data));
@@ -94,7 +96,13 @@ class _MainAppState extends ConsumerState<MainApp> {
9496

9597
var files = ref.read(filesProvider);
9698
var index = files.indexWhere((file) => file.path == data);
97-
if (index != -1) return;
99+
if (index != -1) {
100+
DialogUtils.showInfoDialog(
101+
"No new APK files were dropped",
102+
"You can only drop APK files that are not already selected",
103+
);
104+
return;
105+
}
98106

99107
var xfile = XFile(data);
100108
ref.read(filesProvider.notifier).state = [...files, xfile];

lib/pages/main_page.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import 'package:adb_tools/db/db.dart';
44
import 'package:adb_tools/pages/man_page/left_side.dart';
55
import 'package:adb_tools/pages/man_page/right_side.dart';
66
import 'package:adb_tools/providers/device_list_provider.dart';
7+
import 'package:adb_tools/utils/dialog_utils.dart';
78
import 'package:flutter/material.dart';
89
import 'package:flutter_riverpod/flutter_riverpod.dart';
910

@@ -19,6 +20,8 @@ class _MainPageState extends ConsumerState<MainPage> {
1920
void initState() {
2021
_init();
2122

23+
DialogUtils.init(context);
24+
2225
// execute method after current widget build
2326
WidgetsBinding.instance.addPostFrameCallback((_) {
2427
refreshDeviceList(ref, printOutput: false);

lib/pages/man_page/left_side/apk_drop_target.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ class _ApkDragTargetState extends ConsumerState<ApkDragTarget> {
2929
}).toList();
3030
if (files.isEmpty) {
3131
DialogUtils.showInfoDialog(
32-
context,
3332
"No new APK files were dropped",
3433
"You can only drop APK files that are not already selected",
3534
);

lib/utils/dialog_utils.dart

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
11
import 'package:flutter/material.dart';
22

33
class DialogUtils {
4-
static void showInfoDialog(BuildContext context, String title, String message) {
5-
showDialog(context: context, builder: (context){
4+
5+
static BuildContext? _context;
6+
7+
static void init(BuildContext context) {
8+
_context = context;
9+
}
10+
11+
static void showInfoDialog(String title, String message) {
12+
if (_context == null || !_context!.mounted) {
13+
debugPrint("DialogUtils: _context is null");
14+
return;
15+
}
16+
17+
showDialog(context: _context!, builder: (context){
618
return AlertDialog(
719
title: Text(title),
820
content: Text(message),

0 commit comments

Comments
 (0)