59 lines
1.5 KiB
Dart
59 lines
1.5 KiB
Dart
|
|
import 'package:flutter/material.dart';
|
|||
|
|
import 'package:permission_handler/permission_handler.dart';
|
|||
|
|
import 'package:provider/provider.dart';
|
|||
|
|
import 'package:ai_chat_assistant/app.dart';
|
|||
|
|
import 'package:ai_chat_assistant/services/message_service.dart';
|
|||
|
|
import 'package:ai_chat_assistant/enums/vehicle_command_type.dart';
|
|||
|
|
|
|||
|
|
void main() async {
|
|||
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|||
|
|
|
|||
|
|
// 请求麦克风权限
|
|||
|
|
if (!await Permission.microphone.isGranted) {
|
|||
|
|
await Permission.microphone.request();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 初始化 AI Chat Assistant,注册车控命令回调
|
|||
|
|
ChatAssistantApp.initialize(
|
|||
|
|
commandCallback: (VehicleCommandType type, Map<String, dynamic>? params) async {
|
|||
|
|
// 这里是示例的车控命令处理逻辑
|
|||
|
|
print('收到车控命令: $type, 参数: $params');
|
|||
|
|
return Future.value((true, {'message': '命令已执行'}));
|
|||
|
|
},
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
runApp(
|
|||
|
|
ChangeNotifierProvider(
|
|||
|
|
create: (_) => MessageService(),
|
|||
|
|
child: const MyApp(),
|
|||
|
|
),
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
class MyApp extends StatelessWidget {
|
|||
|
|
const MyApp({super.key});
|
|||
|
|
|
|||
|
|
@override
|
|||
|
|
Widget build(BuildContext context) {
|
|||
|
|
return MaterialApp(
|
|||
|
|
title: 'AI Chat Assistant Example',
|
|||
|
|
theme: ThemeData(
|
|||
|
|
primarySwatch: Colors.blue,
|
|||
|
|
useMaterial3: true,
|
|||
|
|
),
|
|||
|
|
home: const ExampleHomePage(),
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
class ExampleHomePage extends StatelessWidget {
|
|||
|
|
const ExampleHomePage({super.key});
|
|||
|
|
|
|||
|
|
@override
|
|||
|
|
Widget build(BuildContext context) {
|
|||
|
|
return const Scaffold(
|
|||
|
|
body: ChatAssistantApp(),
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
}
|