Flutter:嘗試擼一個具有慣性跟阻力的旋轉控制元件或用感測器控制其旋轉

weixin_34249678發表於2019-01-13

來源

一直都想寫一個可以轉動的Widget,並且可以近似的模擬生活中的慣性跟阻力,因為設計到一些數學公式,作者還去請教了我的高中老師,最後學了點感測器,就直接外加個可選擇感測器控制了

效果

14486200-3af54f78dac9dce5.gif
1231312.gif

實現方法

邏輯部分比較複雜,作者寫了好幾天,最後乾脆直接寫了一個Dart Packages上傳到了Pub,裡面有大量的註釋,程式碼還很不簡化體諒一下,歡迎體驗

將其新增到包的pubspec.yaml檔案中:

dependencies:
  rotated_view: ^1.0.1

然後匯入包

import 'package:rotated_view/rotated_view.dart';

程式碼部分

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:rotated_view/rotated_view.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
StreamSubscription _subscription;

@override
void initState() {
  super.initState();
}

@override
void dispose() {
  if (_subscription != null) {
    _subscription.cancel();
  }
  super.dispose();
}

@override
Widget build(BuildContext context) {
  return MaterialApp(
    color: Colors.black,
    home: Scaffold(
      body: Center(
          child: Column(
        children: <Widget>[
          Padding(
            padding: EdgeInsets.fromLTRB(0, 100, 0, 0),
          ),
          Container(
            width: 400,
            height: 400,
            child: RotatedView(
              child: Image.asset("images/launcher_background.png"),
              usesensor: false,
              issame: false,
              haveinertia: true,
            ),
          ),
          Text(""),
        ],
      )),
    ),
  );
}
}

我的FlutterGithub

相關文章