【发布时间】:2021-09-13 03:25:28
【问题描述】:
我正在尝试为我正在制作的游戏构建一个教程小部件,但我的视频播放器没有显示。我遇到的主要问题是我的视频播放器没有出现在我的屏幕上。我确实将互联网权限插入到我的AndroidManifest.xml 文件中。下面是我的代码屏幕,下面是我的代码:
这是我的代码:
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'package:in_app_update/in_app_update.dart';
import 'package:video_player/video_player.dart';
import 'ad_manager.dart';
import 'audio_controller.dart';
import 'main.dart';
class Tutorial extends StatefulWidget {
Future<InitializationStatus> _initGoogleMobileAds() {
return MobileAds.instance.initialize();
}
@override
State<StatefulWidget> createState() {
this._initGoogleMobileAds();
return _TutorialState();
}
}
class _TutorialState extends State<Tutorial> {
AudioController _audioController = AudioController();
late var _bannerAd;
bool _isBannerAdReady = false;
late VideoPlayerController _controller;
@override
void initState() {
_audioController.pauseMusic();
super.initState();
_controller = VideoPlayerController.network('http://techslides.com/demos/sample-videos/small.mp4')
..initialize().then((_){
setState((){});
});
if(Platform.isAndroid)
InAppUpdate.performImmediateUpdate();
_bannerAd = BannerAd(
adUnitId: AdManager.bannerAd0UnitId,
request: AdRequest(),
size: AdSize.banner,
listener: BannerAdListener(
onAdLoaded: (_) {
setState(() {
_isBannerAdReady = true;
});
},
onAdFailedToLoad: (ad, err) {
print('Failed to load a banner ad: ${err.message}');
print(err.responseInfo);
print(err.code);
print(err.domain);
_isBannerAdReady = false;
ad.dispose();
},
),
);
_bannerAd.load();
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
]);
}
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: Builder(
builder: (BuildContext context){
return Scaffold(
backgroundColor: Color(0xFF151515),
body: Column(
children: <Widget>[
if (_isBannerAdReady)
Align(
alignment: Alignment.topCenter,
child: Container(
width: _bannerAd.size.width.toDouble(),
height: _bannerAd.size.height.toDouble(),
child: AdWidget(ad: _bannerAd),
),
),
Center(
child: _controller.value.isInitialized
? AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller),
)
: Container(),
),
FloatingActionButton(
onPressed: () {
setState(() {
_controller.value.isPlaying
? _controller.pause()
: _controller.play();
});
},
child: Icon(
_controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
),
),
TextButton(
//padding: EdgeInsets.only(left: 100, right: 100),
onPressed: () {
print("Back");
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DBall()),
);
},
child: Card(
margin: EdgeInsets.fromLTRB(25, 130, 25, 5),
borderOnForeground: false,
child: Padding(
padding: EdgeInsets.all(20),
child: Text(
"Back",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 30, fontFamily: "Goldman"),
),
)),
),
]
)
);
}
)
);
}
}
这是我的输出:
E/ExoPlayerImplInternal(14522): Playback error
E/ExoPlayerImplInternal(14522): com.google.android.exoplayer2.ExoPlaybackException: Source error
E/ExoPlayerImplInternal(14522): at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:554)
E/ExoPlayerImplInternal(14522): at android.os.Handler.dispatchMessage(Handler.java:102)
E/ExoPlayerImplInternal(14522): at android.os.Looper.loop(Looper.java:223)
E/ExoPlayerImplInternal(14522): at android.os.HandlerThread.run(HandlerThread.java:67)
E/ExoPlayerImplInternal(14522): Caused by: com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: Unable to connect
E/ExoPlayerImplInternal(14522): at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:309)
E/ExoPlayerImplInternal(14522): at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:84)
E/ExoPlayerImplInternal(14522): at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:1013)
E/ExoPlayerImplInternal(14522): at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:415)
E/ExoPlayerImplInternal(14522): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/ExoPlayerImplInternal(14522): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/ExoPlayerImplInternal(14522): at java.lang.Thread.run(Thread.java:923)
E/ExoPlayerImplInternal(14522): Caused by: java.io.IOException: Cleartext HTTP traffic to techslides.com not permitted
E/ExoPlayerImplInternal(14522): at com.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:127)
E/ExoPlayerImplInternal(14522): at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:462)
E/ExoPlayerImplInternal(14522): at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:131)
E/ExoPlayerImplInternal(14522): at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:589)
E/ExoPlayerImplInternal(14522): at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:493)
E/ExoPlayerImplInternal(14522): at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:307)
E/ExoPlayerImplInternal(14522): ... 6 more
E/flutter (14522): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: PlatformException(VideoError, Video player had error com.google.android.exoplayer2.ExoPlaybackException: Source error, null, null)
E/flutter (14522):
【问题讨论】:
标签: flutter dart video-player