flutter_duit

Форк
0
119 строк · 2.6 Кб
1
import 'dart:async';
2

3
import 'package:duit_kernel/duit_kernel.dart';
4
import 'package:example/src/registry_example.dart';
5
import 'package:flutter/material.dart';
6
import 'package:flutter_duit/flutter_duit.dart';
7

8
final class _Handler implements ExternalEventHandler {
9
  @override
10
  FutureOr<void> handleCustomEvent(
11
      BuildContext context, String key, Object? extra) {
12
    switch (key) {
13
      case "event1":
14
        {
15
          debugPrint("Event 1");
16
          break;
17
        }
18
      case "event2":
19
        {
20
          debugPrint("Event 2");
21
          break;
22
        }
23
    }
24
  }
25

26
  @override
27
  FutureOr<void> handleNavigation(
28
      BuildContext context, String path, Object? extra) {
29
    // TODO: implement handleNavigation
30
    throw UnimplementedError();
31
  }
32

33
  @override
34
  FutureOr<void> handleOpenUrl(String url) {
35
    // TODO: implement handleOpenUrl
36
    throw UnimplementedError();
37
  }
38
}
39

40
void main() async {
41
  WidgetsFlutterBinding.ensureInitialized();
42
  DuitRegistry.register(
43
    "ExampleCustomWidget",
44
    modelFactory: modelMapperExample,
45
    buildFactory: exampleRenderer,
46
    attributesFactory: exampleAttributeMapper,
47
  );
48

49
  final worker = DuitWorkerPool();
50
  await worker.initWithConfiguration(
51
    DuitWorkerPoolConfiguration(
52
      workerCount: 6,
53
      policy: TaskDistributionPolicy.roundRobin,
54
    ),
55
  );
56

57
  DuitRegistry.registerWorkerPool(worker);
58
  runApp(const MyApp());
59
}
60

61
class MyApp extends StatelessWidget {
62
  const MyApp({super.key});
63

64
  @override
65
  Widget build(BuildContext context) {
66
    return MaterialApp(
67
      title: 'Flutter Demo',
68
      theme: ThemeData(
69
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
70
      ),
71
      home: const MyHomePage(),
72
    );
73
  }
74
}
75

76
class MyHomePage extends StatefulWidget {
77
  const MyHomePage({super.key});
78

79
  @override
80
  State<MyHomePage> createState() => _MyHomePageState();
81
}
82

83
class _MyHomePageState extends State<MyHomePage> {
84
  late final DuitDriver driver1;
85

86
  @override
87
  void initState() {
88
    driver1 = DuitDriver(
89
      "/example_screen",
90
      transportOptions: HttpTransportOptions(
91
        defaultHeaders: {"Content-Type": "application/json"},
92
        baseUrl: "http://localhost:8999",
93
      ),
94
      eventHandler: _Handler(),
95
    );
96
    super.initState();
97
  }
98

99
  @override
100
  void dispose() {
101
    driver1.dispose();
102
    super.dispose();
103
  }
104

105
  @override
106
  Widget build(BuildContext context) {
107
    return Scaffold(
108
      body: SafeArea(
109
        child: Center(
110
          child: DuitViewHost(
111
            context: context,
112
            driver: driver1,
113
            placeholder: const CircularProgressIndicator(),
114
          ),
115
        ),
116
      ),
117
    );
118
  }
119
}
120

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.