Публикуван източник
Изтегляне на източник ZIP
CH-J SM Mobile
Преглед на директории и файлове за конкретна версия на приложението.
CH-J / SM Mobile
134 Файлове
sm-mobile-20261016T050549Z-3678f2a05fa9
Добавено: · Построена:
1
import 'package:flutter/material.dart';2
import '../l10n/strings.dart';3
import '../services/ssh_service.dart';5
void showFailure(BuildContext context, Object error) {6
if (!context.mounted) return;7
ScaffoldMessenger.of(context).showSnackBar(8
SnackBar(9
content: Text(context.tr(failureCode(error))),10
duration: const Duration(seconds: 8),11
),12
);13
}15
Future<bool> confirm(16
BuildContext context,17
String key, {18
String? detail,19
}) async =>20
await showDialog<bool>(21
context: context,22
builder: (ctx) => AlertDialog(23
title: Text(ctx.tr(key)),24
content: detail == null ? null : SelectableText(detail),25
actions: [26
TextButton(27
onPressed: () => Navigator.pop(ctx, false),28
child: Text(ctx.tr('cancel')),29
),30
FilledButton(31
onPressed: () => Navigator.pop(ctx, true),32
child: Text(ctx.tr('continueAction')),33
),34
],35
),36
) ??37
false;38
Future<String?> askName(39
BuildContext context,40
String title, {41
String initial = '',42
}) async {43
final field = TextEditingController(text: initial);44
final result = await showDialog<String>(45
context: context,46
builder: (ctx) => AlertDialog(47
title: Text(ctx.tr(title)),48
content: TextField(49
controller: field,50
autofocus: true,51
decoration: InputDecoration(labelText: ctx.tr('name')),52
),53
actions: [54
TextButton(55
onPressed: () => Navigator.pop(ctx),56
child: Text(ctx.tr('cancel')),57
),58
FilledButton(59
onPressed: () => Navigator.pop(ctx, field.text),60
child: Text(ctx.tr('save')),61
),62
],63
),64
);65
Future.delayed(const Duration(seconds: 1), field.dispose);66
return result;67
}69
class PageMessage extends StatelessWidget {70
final String label;71
final IconData icon;72
const PageMessage(this.label, {this.icon = Icons.dns_outlined, super.key});73
@override74
Widget build(BuildContext context) => Center(75
child: Padding(76
padding: const EdgeInsets.all(28),77
child: Column(78
mainAxisSize: MainAxisSize.min,79
children: [80
Icon(icon, size: 48, color: Theme.of(context).colorScheme.primary),81
const SizedBox(height: 20),82
Text(context.tr(label), textAlign: TextAlign.center),83
],84
),85
),86
);87
}SHA-256
bf7d478173bc85bf103f0b4160ff947f0bc7ea29074ef1398aa960463d9e43ddCH-J Proprietary Software License 1.14 · Източникът е предоставен под CH-J Proprietary Software License 1.14. Неговата наличност не променя лицензионните условия или не предоставя допълнителни права.
Архив SHA-256
c486a807e4828998b9c57ab0f2e760f7980b31965fe118e89d3e1a5a2b65be65