質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

Q&A

解決済

1回答

1172閲覧

AnimationControllerのvelocityをprintさせる方法について

copp

総合スコア11

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

1グッド

0クリップ

投稿2020/03/31 02:24

前提・実現したいこと

ソースは下記を参考にさせて頂いております
https://flutter-widget.live/widgets/PositionedTransition

ここに質問の内容を詳しく書いてください。
Andoroid Studioを使用しFlutterの勉強をしております。
その際にAnimationControllerのvelocityをprintしようと思ったのですが
どのように記載すればいいのか分かりませんでした。

また、デバッグで_controllerを表示させた場合でもvelocityがどこにあるか分かりませんでした

お手数ではございますが、御教唆お願いいたします。

該当のソースコード

dart

ソースコード import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(title: 'Flutter Demo Home Page'), ); } } class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin { final RelativeRectTween relativeRectTween = RelativeRectTween( begin: RelativeRect.fromLTRB(40, 40, 0, 0), end: RelativeRect.fromLTRB(0, 0, 40, 40), ); AnimationController _controller; bool _first = true; initState() { _controller = AnimationController( vsync: this, duration: const Duration(seconds: 1), ); super.initState(); } void _toggleVelocity() { // ここでprintやデバッグを試しました _controller.fling(velocity: _first ? -1 : 1); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), ), body: Column( mainAxisSize: MainAxisSize.min, children: <Widget>[ Container( color: Colors.blue[50], height: 300, child: Stack( children: <Widget>[ PositionedTransition( rect: relativeRectTween.animate(_controller), child: Container( child: Container( width: 200, height: 200, padding: EdgeInsets.all(20), child: FlutterLogo(), ), ), ), ], ), ), SizedBox( height: 20, ), FlatButton( onPressed: () { _toggleVelocity(); _first = !_first; }, child: Text( "CLICK ME!", ), ) ], ), ); } }

試したこと

AnimationController _controller;
print(_controller.fling);

補足情報(FW/ツールのバージョンなど)

Flutter 1.16.4-pre.33
Dart 2.8.0 (build 2.8.0-dev.17.0 1402e8e1a4)

popobot👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

print(_controller.velocity)を実行すればその時の速度が見れると思います。

ただし _toggleVelocity() 内で print(_controller.velocity) を実行しても、ボタンを押した時の速度なので、速度の変化とかはみれないと思います。

WidgetsBinding.instance.addPersistentFrameCallback を使えば、描画(フレーム)毎の速度を出力できそうだったので、試してみてください。 initState() に以下の処理を入れるだけです。

WidgetsBinding.instance .addPersistentFrameCallback((_) => print(_controller.velocity));

以下の様に出力されるはずです

flutter: 0.0 flutter: 0.0 flutter: 0.0 flutter: 0.0 flutter: 0.0 flutter: 0.9999998807907104 flutter: 8.109345614910126 flutter: 8.216215908527374 flutter: 6.395259886980057 flutter: 5.265292972326279 flutter: 3.314701847732067 flutter: 2.564506560564041 flutter: 1.4837996698915958 flutter: 1.114069551229477 flutter: 0.6159159000962973 flutter: 0.45433399453759193 flutter: 0.24411545787006617 flutter: 0.0 flutter: 0.0 flutter: 0.0 flutter: 0.0 flutter: 0.0 flutter: 0.0 flutter: -0.9999998807907104 flutter: -8.10939335823059 flutter: -8.216189920902252 flutter: -7.47108656167984 flutter: -5.265226826071739 flutter: -4.219144865870476 flutter: -2.5645470172166824 flutter: -1.9602973200380802 flutter: -1.1140501573681831 flutter: -0.8307190164923668 flutter: -0.4543256387114525 flutter: -0.33367072744295 flutter: 0.0

念のため、動作確認した完全なコードも載せておきます

import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(title: 'Flutter Demo Home Page'), ); } } class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin { final RelativeRectTween relativeRectTween = RelativeRectTween( begin: RelativeRect.fromLTRB(40, 40, 0, 0), end: RelativeRect.fromLTRB(0, 0, 40, 40), ); AnimationController _controller; bool _first = true; initState() { _controller = AnimationController( vsync: this, duration: const Duration(seconds: 1), ); WidgetsBinding.instance .addPersistentFrameCallback((_) => print(_controller.velocity)); super.initState(); } void _toggleVelocity() { // ここでprintやデバッグを試しました _controller.fling(velocity: _first ? -1 : 1); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), ), body: Column( mainAxisSize: MainAxisSize.min, children: <Widget>[ Container( color: Colors.blue[50], height: 300, child: Stack( children: <Widget>[ PositionedTransition( rect: relativeRectTween.animate(_controller), child: Container( child: Container( width: 200, height: 200, padding: EdgeInsets.all(20), child: FlutterLogo(), ), ), ), ], ), ), SizedBox( height: 20, ), FlatButton( onPressed: () { _toggleVelocity(); _first = !_first; }, child: Text( "CLICK ME!", ), ) ], ), ); } }

投稿2020/04/03 03:40

popobot

総合スコア6586

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

copp

2020/04/03 13:42

詳しいご返答ありがとうございます。 _controller.fling. ... ではなく _controller.velocityなのですね。 また、WidgetsBindingクラス自体知りらず、すごく勉強になりました。 popobotさんには何度も詳しく答えて頂き、本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問