面试题答案
一键面试代码结构设计
- 创建震动管理类:在Flutter项目中创建一个
VibrationManager
类,用于统一管理震动逻辑。 - 抽象震动方法:在
VibrationManager
类中定义抽象方法,例如vibrateForLoginSuccess
、vibrateForPaymentFailure
、vibrateForNewMessage
等,根据不同场景定义不同震动方法。 - 平台实现类:针对iOS和Android分别创建实现类,继承自
VibrationManager
抽象类,在这些实现类中使用vibration
插件具体实现震动逻辑。
关键代码片段
- 定义
VibrationManager
抽象类:
abstract class VibrationManager {
void vibrateForLoginSuccess();
void vibrateForPaymentFailure();
void vibrateForNewMessage();
}
- Android实现类:
import 'package:vibration/vibration.dart';
class AndroidVibrationManager extends VibrationManager {
@override
void vibrateForLoginSuccess() {
Vibration.vibrate(duration: 500); // 500毫秒轻度震动
}
@override
void vibrateForPaymentFailure() {
Vibration.vibrate(duration: 1000, amplitude: 255); // 1000毫秒高强度震动
}
@override
void vibrateForNewMessage() {
Vibration.vibrate(pattern: [0, 500, 200, 500]); // 间断震动模式
}
}
- iOS实现类:
import 'package:vibration/vibration.dart';
class iOSVibrationManager extends VibrationManager {
@override
void vibrateForLoginSuccess() {
Vibration.vibrate(duration: 300); // iOS特定设置,300毫秒轻度震动
}
@override
void vibrateForPaymentFailure() {
Vibration.vibrate(duration: 800); // 800毫秒相对高强度震动
}
@override
void vibrateForNewMessage() {
Vibration.vibrate(pattern: [0, 300, 100, 300]); // iOS的间断震动模式
}
}
- 使用震动管理模块:
void main() {
VibrationManager vibrationManager;
if (Platform.isAndroid) {
vibrationManager = AndroidVibrationManager();
} else if (Platform.isIOS) {
vibrationManager = iOSVibrationManager();
}
// 用户登录成功场景
vibrationManager.vibrateForLoginSuccess();
// 支付失败场景
vibrationManager.vibrateForPaymentFailure();
// 收到新消息场景
vibrationManager.vibrateForNewMessage();
}
通过以上设计,可以基于vibration
插件设计一个通用的震动管理模块,满足不同场景需求并处理好iOS和Android平台差异。