main.dart 3,5 КБ
Newer Older
ovc-serega's avatar
ovc-serega включено в состав коммита
1
2
3
// SPDX-FileCopyrightText: 2025 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause

ovc-serega's avatar
ovc-serega включено в состав коммита
4
import 'package:aurora_intent/aurora_intent.dart';
ovc-serega's avatar
ovc-serega включено в состав коммита
5
6
import 'package:flutter/material.dart';

ovc-serega's avatar
ovc-serega включено в состав коммита
7
void main() async {
ovc-serega's avatar
ovc-serega включено в состав коммита
8
9
10
11
12
13
14
15
  WidgetsFlutterBinding.ensureInitialized();

  AuroraIntent.initialize();
  await AuroraIntent.registerIntent("X-MyIntent", (params) async {
    int counter = params["counter"] is int ? params["counter"] : 0;
    return {"counter": ++counter};
  });

ovc-serega's avatar
ovc-serega включено в состав коммита
16
  await AuroraIntent.registerIntent(AuroraStandartIntents.openUri, _uriHandler);
ovc-serega's avatar
ovc-serega включено в состав коммита
17
18
19

  await AuroraIntent.startService();

ovc-serega's avatar
ovc-serega включено в состав коммита
20
21
22
  runApp(const MyApp());
}

ovc-serega's avatar
ovc-serega включено в состав коммита
23
24
Map<String, dynamic>? _uriHandler(Map<String, dynamic> params) {
  debugPrint("Invoke URI: $params");
ovc-serega's avatar
ovc-serega включено в состав коммита
25
26
27
  return null;
}

ovc-serega's avatar
ovc-serega включено в состав коммита
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({super.key});

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
ovc-serega's avatar
ovc-serega включено в состав коммита
51
  int myIntentInvoked = 0;
ovc-serega's avatar
ovc-serega включено в состав коммита
52
53
54
55
56

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
ovc-serega's avatar
ovc-serega включено в состав коммита
57
        title: const Text('Aurora intent example'),
ovc-serega's avatar
ovc-serega включено в состав коммита
58
59
60
61
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
      ),
      body: Padding(
        padding: const EdgeInsets.all(8.0),
ovc-serega's avatar
ovc-serega включено в состав коммита
62
63
64
65
66
67
68
69
70
71
        child: Row(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Column(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: [
                ElevatedButton(
                  onPressed: () async {
                    await AuroraIntent.invokeIntent(
                      name: AuroraStandartIntents.start,
ovc-serega's avatar
ovc-serega включено в состав коммита
72
                      hints: const Hints(
ovc-serega's avatar
ovc-serega включено в состав коммита
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
                        preferredHandler: "com.jolla.settings",
                      ),
                    );
                  },
                  child: const Text("Open settings"),
                ),
                ElevatedButton(
                  onPressed: () async {
                    await AuroraIntent.invokeIntent(
                      name: AuroraStandartIntents.openUri,
                      params: {
                        "uri": "tel:+79996660013",
                      },
                    );
                  },
                  child: const Text("Call number"),
                ),
ovc-serega's avatar
ovc-serega включено в состав коммита
90
91
92
93
94
95
96
97
98
99
100
101
102
                Text("MyIntent invoked: $myIntentInvoked"),
                ElevatedButton(
                  onPressed: () async {
                    var result =
                        await AuroraIntent.invokeIntent(name: "X-MyIntent", params: {"counter": myIntentInvoked});

                    setState(() {
                      myIntentInvoked = result["counter"] is int ? result["counter"] : 0;
                    });
                  },
                  child: const Text("Invoke X-MyIntent"),
                ),
                ElevatedButton(
ovc-serega's avatar
ovc-serega включено в состав коммита
103
104
105
106
107
108
109
                  onPressed: () async {
                    await AuroraIntent.invokeIntent(
                      name: AuroraStandartIntents.openUri,
                      params: {'uri': 'geo:0.0,0.0'},
                    );
                  },
                  child: const Text("Invoke geo URI"),
ovc-serega's avatar
ovc-serega включено в состав коммита
110
                ),
ovc-serega's avatar
ovc-serega включено в состав коммита
111
112
113
              ],
            )
          ],
ovc-serega's avatar
ovc-serega включено в состав коммита
114
115
116
117
118
        ),
      ),
    );
  }
}