body: FutureBuilder( future: PDFDocument.openAsset('assets/button.pdf'), builder: (context, AsyncSnapshot<PDFDocument> snapshot) { if (!snapshot.hasData || snapshot.hasError) {
FutureBuilderはAPI呼び出しとかにいいと思う
body: FutureBuilder( future: PDFDocument.openAsset('assets/button.pdf'), builder: (context, AsyncSnapshot<PDFDocument> snapshot) { if (!snapshot.hasData || snapshot.hasError) {
FutureBuilderはAPI呼び出しとかにいいと思う
これがいいと思う。 最後にsの方。 GitHub - luanpotter/audioplayers: A Flutter plugin to play multiple audio files simultaneously (Android/iOS)
こっちはsがないやつ、プルリク無視されてるし、音声のURLのリンクが死んでたりする https://github.com/rxlabz/audioplayer
ここに表がある https://medium.com/flutter-community/how-to-add-music-audio-to-your-flutter-app-dcb6162c32d7
assets_audio_player
はAndroidにしか対応してないので騙された。
@override Widget build(BuildContext context) { return Scaffold( body: Center( child: const CircularProgressIndicator(), ), ); }
これで以下の警告がうざい。
prefer const with constant constructors.
これ、 https://dart-lang.github.io/linter/lints/prefer_const_constructors.html
@override Widget build(BuildContext context) { return const Scaffold( body: Center( child: CircularProgressIndicator(), ), ); }
Scaffold
の前にconst
を持って行ったら解決。
画面見えないので「Padding」追加した。 こんな感じに
import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: MyHomePage(), ); } } class MyHomePage extends StatefulWidget { MyHomePage(); @override createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { int _counter = 0; @override Widget build(BuildContext context) { return Scaffold( body: Center( child: Column( children: <Widget>[ // ここ勝手に追加しました。しないと見えないw Padding( padding: EdgeInsets.all(20.0), ), Text( 'You have pushed the button this many times:', ), Text( '$_counter', ), ], ), ), floatingActionButton: FloatingActionButton( onPressed: () { _counter++; }, child: Icon(Icons.add), ), ); } }
Examine the code above and determine where setState should be called.
→ 上のコードを調べて、setState
を呼び出す場所を決定してください。
_MyHomePageState
→ _MyHomePageState
ないのカウンターをインクリメントしているところ。onPressed: () { setState(() { _counter++; }); },
この記事が参考になる FlutterのsetStateとは? - Qiita setStateではこの足したことをクラスに伝えるということをしている。 この伝える処理があることで+ボタンを押すと表示される数字が増えている。setStateがないと+ボタンを押しても画面が更新されず表示されている数字が増えない。 ちなみに以下でもいいっっぽい。
_counter++ setState((){});
Inside the Text widget for the $_counter
, in _MyHomePageState
→ _MyHomePageState
内のTextウィジットの内部。ウィジットで呼ぶのはおかしいかと。
We should nest return MaterialApp
in a setState, in MyApp
→MyApp
内のreturn MaterialApp
でネストしてsetStateを入れる
え・・・無理
return MaterialApp( home: MyHomePage(), );
setState()
for incrementing an integer
→integerでインクリメントするためにsetState()
はいらない。
やらんと更新がないよ・・・。