Я пытаюсь интегрировать Agora SDK, мне удалось настроить его для работы, но единственная проблема заключается в том, что локальное представление пусто, пока я не сделаю горячий перезапуск, после горячего перезапуска все работает нормально, удаленное представление работает отлично, я пытался отладить эту проблему безрезультатно, ниже приведен мой код.
import 'dart:async';
import 'package:flutter/material.dart';
импортировать 'package:permission_handler/permission_handler.dart';
импортировать 'package:agora_rtc_engine/rtc_engine.dart';
импортировать 'package:agora_rtc_engine/rtc_local_view.dart' как RtcLocalView;
импорт 'package:agora_rtc_engine/rtc_remote_view.dart' как RtcRemoteView;
const appId = "e660ebb529e34d838fedc01ed1a1b5e4";
const token =
"006e660ebb529e34d838fedc01ed1a1b5e4IABB69OL6buUPHAgM4dq+hpsHKMLCooStMhXyvSdauF2eNzDPrsAAAAAEADHF4BY49MwYQEAAQDi0zBh";
void main() => runApp(MaterialApp(home: MyApp()));
class MyApp расширяет StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
class _MyAppState расширяет состояние {
int _remoteUid;
RtcEngine _engine;
@override
void initState() {
super.initState();
initAgora();
Future initAgora() async {
// получаем разрешения
await [Permission.microphone, Permission.camera].request();
// создаем движок
_engine = await RtcEngine.create(appId);
await _engine.enableVideo();
_engine.setEventHandler(
RtcEngineEventHandler(
joinChannelSuccess: (String Channel, int uid, int elapsed) {
print("локальный пользователь $uid присоединился");
},
userJoined: (int uid, int elapsed) {
print("присоединился удаленный пользователь $uid");
setState(() {
_remoteUid = uid;
});
},
userOffline: (int uid, причина UserOfflineReason) {
print("удаленный пользователь $uid покинул канал");
setState(() {
_remoteUid = null;
});
},
),
);
await _engine.joinChannel(token, "firstchannel", null, 0);
}
// Создаем пользовательский интерфейс с локальным и удаленным просмотром
@override
Виджет build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Agora Video Call'),
),
body: Stack(
дочерние элементы: [
Center(
дочерний элемент: _remoteVideo(),
),
Align(
выравнивание: Alignment.topLeft,
дочерний элемент: Container(
ширина: 100,
высота: 100,
дочерний элемент: Center(
дочерний элемент: RtcLocalView.SurfaceView(),
),
),
),
],
),
);
Виджет _renderLocalPreview() {
return RtcLocalView.SurfaceView();
// Отображение видео удаленного пользователя
Виджет _remoteVideo() {
if (_remoteUid != null) {
return RtcRemoteView.SurfaceView(uid: _remoteUid);
} else {
return Text(
'Пожалуйста, подождите, пока присоединится удаленный пользователь',
textAlign: TextAlign.center,
);
Подробнее здесь: https://stackoverflow.com/questions/690 ... on-flutter
Локальный вид Агоры, показывающий пустой экран на Flutter ⇐ IOS
Программируем под IOS
-
Anonymous
1764821293
Anonymous
Я пытаюсь интегрировать Agora SDK, мне удалось настроить его для работы, но единственная проблема заключается в том, что локальное представление пусто, пока я не сделаю горячий перезапуск, после горячего перезапуска все работает нормально, удаленное представление работает отлично, я пытался отладить эту проблему безрезультатно, ниже приведен мой код.
import 'dart:async';
import 'package:flutter/material.dart';
импортировать 'package:permission_handler/permission_handler.dart';
импортировать 'package:agora_rtc_engine/rtc_engine.dart';
импортировать 'package:agora_rtc_engine/rtc_local_view.dart' как RtcLocalView;
импорт 'package:agora_rtc_engine/rtc_remote_view.dart' как RtcRemoteView;
const appId = "e660ebb529e34d838fedc01ed1a1b5e4";
const token =
"006e660ebb529e34d838fedc01ed1a1b5e4IABB69OL6buUPHAgM4dq+hpsHKMLCooStMhXyvSdauF2eNzDPrsAAAAAEADHF4BY49MwYQEAAQDi0zBh";
void main() => runApp(MaterialApp(home: MyApp()));
class MyApp расширяет StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
class _MyAppState расширяет состояние {
int _remoteUid;
RtcEngine _engine;
@override
void initState() {
super.initState();
initAgora();
Future initAgora() async {
// получаем разрешения
await [Permission.microphone, Permission.camera].request();
// создаем движок
_engine = await RtcEngine.create(appId);
await _engine.enableVideo();
_engine.setEventHandler(
RtcEngineEventHandler(
joinChannelSuccess: (String Channel, int uid, int elapsed) {
print("локальный пользователь $uid присоединился");
},
userJoined: (int uid, int elapsed) {
print("присоединился удаленный пользователь $uid");
setState(() {
_remoteUid = uid;
});
},
userOffline: (int uid, причина UserOfflineReason) {
print("удаленный пользователь $uid покинул канал");
setState(() {
_remoteUid = null;
});
},
),
);
await _engine.joinChannel(token, "firstchannel", null, 0);
}
// Создаем пользовательский интерфейс с локальным и удаленным просмотром
@override
Виджет build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Agora Video Call'),
),
body: Stack(
дочерние элементы: [
Center(
дочерний элемент: _remoteVideo(),
),
Align(
выравнивание: Alignment.topLeft,
дочерний элемент: Container(
ширина: 100,
высота: 100,
дочерний элемент: Center(
дочерний элемент: RtcLocalView.SurfaceView(),
),
),
),
],
),
);
Виджет _renderLocalPreview() {
return RtcLocalView.SurfaceView();
// Отображение видео удаленного пользователя
Виджет _remoteVideo() {
if (_remoteUid != null) {
return RtcRemoteView.SurfaceView(uid: _remoteUid);
} else {
return Text(
'Пожалуйста, подождите, пока присоединится удаленный пользователь',
textAlign: TextAlign.center,
);
Подробнее здесь: [url]https://stackoverflow.com/questions/69018583/agora-local-view-showing-blank-screen-on-flutter[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия