首页 > 解决方案 > Flutter 是否支持特定于平台的文件?

问题描述

Flutter 是否支持特定于平台的文件? 我们可以创建特定于平台的文件吗?例如myButton.dartmyButton.iOS.dartmyButton.android.dart以便在导入 myButton 文件时,它会根据平台选择适当的文件并执行它。

标签: flutterplatform

解决方案


没有像您描述的那样的内置解决方案,但是您可以只编写一个瘦包装小部件,它会根据平台选择正确的小部件:

import 'dart:io' show Platform;
import 'package:flutter/widgets.dart';

class MyButton extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    if (Platform.isIOS) {
      return MyIOSButton();
    } else if (Platform.isAndroid) {
      return MyAndroidButton();
    } else
      return GenericButton();
    }
  }
}

或者如果你想要一些预制的小部件,你可以查看flutter_platform_widgets包。

其中已经提供了一个通用小部件,以制作平台感知小部件:

return PlatformWidget(
  ios: (_) => Icon(CupertinoIcons.flag),
  android: (_) => Icon(Icons.flag),
);

推荐阅读