Flutter41,android高级开发及实践课后答案

本文介绍如何在Flutter应用中实现摇一摇功能,利用acceleratorEvents监听设备加速度变化,判断超过阈值时触发振动和状态更新。同时提到了Android开发面试的重点在于对基础知识的掌握程度。
摘要由CSDN通过智能技术生成

bool isShaked = false;

int _curentIndex = 0;

StreamSubscription _streamSubscription;

static const int SHAKE_TIMEOUT = 500;//晃动时间

static const double SHAKE_SHRESHOLD = 3.25;//晃动时间

var _lastShakeTime = 0;//上次晃动的时间

@override

void initState() {

// TODO: implement initState

super.initState();

_streamSubscription = accelerometerEvents.listen((event) {

var now = DateTime.now().millisecondsSinceEpoch;

if((now - _lastShakeTime) > SHAKE_TIMEOUT) {

var x = event.x;

var y = event.y;

var z = event.z;

double accelerate = sqrt(x* x + y * y + z * z) - 9.8;

//加速度如果超过阈值

if(accelerate > SHAKE_SHRESHOLD) {

//手机晃动

Vibration.vibrate();

_lastShakeTime = now;

if(!mounted) return;

setState(() {

isShaked = true;

});

}

}

});

}

@override

void dispose() {

// TODO: implement dispose

super.dispose();

_streamSubscription.cancel();

}

@override

Widget build(BuildContext context) {

return Scaffold(

appBar: AppBar(

title: Text(‘摇一摇’),

),

body: Center(

child: Column(

mainAxisAlignment: MainAxisAlignment.center,

children: [

Image.asset(

‘assets/images/shake.png’,

width:120.0,

height: 120.0,

),

SizedBox(

height: 10.0,

),

Text(isShaked?‘活动结束’:‘摇一摇获取礼品’),

],

),

),

//底层的导航栏,2个导航栏

bottomNavigationBar: BottomNavigationBar(

//2个条目

items: [

BottomNavigationBarItem(icon: Icon(Icons.folder), title: Text(‘礼品’)),

BottomNavigationBarItem(

icon: Icon(Icons.assignment), title: Text(‘资讯’))

],

currentIndex: _curentIndex,

onTap: (index) {

if (!mounted) return;

setState(() {

_curentIndex = index;

});

},

),

);

}

}

discovery_page.dart

import ‘package:barcode_scan/barcode_scan.dart’;

import ‘package:flutter/material.dart’;

import ‘package:flutterapp2/pages/shake_page.dart’;

import ‘common_web_page.dart’;

/**

  • 主界面find

*/

class DiscoveryPage extends StatefulWidget {

@override

_DiscoveryPageState createState() => _DiscoveryPageState();

}

class _DiscoveryPageState extends State {

List<Map<String, IconData>> blocks = [

{

‘开源众包’: Icons.pageview,

‘开源软件’: Icons.speaker_notes_off,

‘码云推荐’: Icons.screen_share,

‘代码骗贷’: Icons.assignment,

},

{

‘扫一扫’: Icons.camera_alt,

‘摇一摇’: Icons.camera,

},

{

‘码云封面人物’: Icons.person,

‘线下活动’: Icons.android,

}

];

void _handleItemClick(String title) {

switch (title) {

case ‘开源众包’:

_navToWebPage(title, ‘https://zb.oschina.net/’);

break;

case ‘扫一扫’:

scan();

break;

case ‘摇一摇’:

Navigator.of(context)

.push(MaterialPageRoute(builder: (context) => ShakePage()));

break;

}

}

Future scan() async {

String barcode = await BarcodeScanner.scan();

print(“Debug barcode==” + barcode);

}

void _navToWebPage(String title, String url) {

if (title != null && url != null) {

Navigator.of(context).push(MaterialPageRoute(

最后

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

上面分享的腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。

Android学习PDF+学习视频+面试文档+知识点笔记

【Android思维脑图(技能树)】

知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。

【Android高级架构视频学习资源】

ster/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)

【Android思维脑图(技能树)】

知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。

[外链图片转存中…(img-al91NuLp-1646555894206)]

【Android高级架构视频学习资源】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值