- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我需要为我的 iOS 应用程序创建一个设置页面。在我的 Android 端,我有 SwitchListTile 来很好地布置开关。
是否有 Flutter 小部件可以帮助我,还是我必须自己编写一个?
最佳答案
您必须自己编写一个,但是您可以很容易地从 SwitchListTile 源代码中抄袭:
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() => MyAppState();
}
class MyAppState extends State<MyApp> {
bool _isSelected = false;
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new SafeArea(
child: new Material(
child: new ListView(
children: <Widget>[
new CupertinoSwitchListTile(
value: _isSelected,
onChanged: (value) {
print("Value changed to $value");
setState(() => _isSelected = value);
},
activeColor: CupertinoColors.activeGreen
)
],
))),
);
}
}
class CupertinoSwitchListTile extends StatelessWidget {
/// This has been shamelessly copied from Material/SwitchListTile.
/// The applicable license applies.
const CupertinoSwitchListTile({
Key key,
@required this.value,
@required this.onChanged,
this.activeColor,
this.title,
this.subtitle,
this.isThreeLine: false,
this.dense,
this.secondary,
this.selected: false,
}) : assert(value != null),
assert(isThreeLine != null),
assert(!isThreeLine || subtitle != null),
assert(selected != null),
super(key: key);
/// Whether this switch is checked.
///
/// This property must not be null.
final bool value;
/// Called when the user toggles the switch on or off.
///
/// The switch passes the new value to the callback but does not actually
/// change state until the parent widget rebuilds the switch tile with the
/// new value.
///
/// If null, the switch will be displayed as disabled.
///
/// The callback provided to [onChanged] should update the state of the parent
/// [StatefulWidget] using the [State.setState] method, so that the parent
/// gets rebuilt; for example:
///
/// ```dart
/// new SwitchListTile(
/// value: _lights,
/// onChanged: (bool newValue) {
/// setState(() {
/// _lights = newValue;
/// });
/// },
/// title: new Text('Lights'),
/// )
/// ```
final ValueChanged<bool> onChanged;
/// The color to use when this switch is on.
///
/// Defaults to accent color of the current [Theme].
final Color activeColor;
/// The primary content of the list tile.
///
/// Typically a [Text] widget.
final Widget title;
/// Additional content displayed below the title.
///
/// Typically a [Text] widget.
final Widget subtitle;
/// A widget to display on the opposite side of the tile from the switch.
///
/// Typically an [Icon] widget.
final Widget secondary;
/// Whether this list tile is intended to display three lines of text.
///
/// If false, the list tile is treated as having one line if the subtitle is
/// null and treated as having two lines if the subtitle is non-null.
final bool isThreeLine;
/// Whether this list tile is part of a vertically dense list.
///
/// If this property is null then its value is based on [ListTileTheme.dense].
final bool dense;
/// Whether to render icons and text in the [activeColor].
///
/// No effort is made to automatically coordinate the [selected] state and the
/// [value] state. To have the list tile appear selected when the switch is
/// on, pass the same value to both.
///
/// Normally, this property is left to its default value, false.
final bool selected;
@override
Widget build(BuildContext context) {
var color = activeColor ?? Theme.of(context).accentColor;
print("Active color: ${color.red} ${color.green} ${color.blue}");
final Widget control = new CupertinoSwitch(
value: value,
onChanged: onChanged,
activeColor: activeColor ?? CupertinoColors.activeGreen,
);
return new MergeSemantics(
child: ListTileTheme.merge(
selectedColor: activeColor ?? CupertinoColors.activeGreen,
child: new ListTile(
leading: secondary,
title: title,
subtitle: subtitle,
trailing: control,
isThreeLine: isThreeLine,
dense: dense,
enabled: onChanged != null,
onTap: onChanged != null
? () {
onChanged(!value);
}
: null,
selected: selected,
),
),
);
}
}
正如我在源代码中指出的那样,因为它是从 flutter 源代码复制的 license at time of copying来自源适用。
关于flutter - 是否有 SwitchListTile 的 cupertino 等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50091392/
@override Widget build(BuildContext context) { return CupertinoPageScaffold(
我被困在 https://codelabs.developers.google.com/codelabs/flutter-cupertino/#5 教程的第 6 步。 .我无法理解它在提示什么。 如果
我有一个列出一些结果的“表格列表”小部件,我想从 2 个不同的来源重用这个小部件。这是方法: "View1"-> 来源 1 "View2"-> 来源 2 "View3"-> 包含列表的表格 TL +-
如果用户按下我的登录按钮后该字段为空,我会尝试在 Cupertino TextField 下方显示错误文本。似乎没有明确的方法可以在任何 CupertinoTextfield 参数中像在 androi
我在 Flutter 中使用 Cupertino 设计并使用 CupertinoTabBar .当来自不同的屏幕时,我想访问不同的选项卡项目。 例如,我有 2 个项目:Home 和 Profile。
我在使用 Cupertino 小部件时遇到了这个恼人的问题。当我创建一个 super 简单的应用程序设置(脚手架、导航栏、一个文本项)时,文本似乎开始于视口(viewport)之外很远的地方。 例子如
我正在尝试使用 endDrawer 添加 CupertinoNavigationBar,我尝试在尾部添加 Gesture Detector,但没有用,显示如下: The following asser
有人知道如何在 Flutter 中制作仅带有图标按钮且没有标题的 Cupertino Bottom 标签栏 View 吗?就像 iOS 上的 Facebook 和 Twitter 底部栏应用程序一样,
我正在尝试为 CupertinoSliverAppBar 添加渐变背景在 Flutter 应用程序中,但我似乎无法弄清楚该怎么做。 SliverAppBar有一个 flexibleSpace接受渐变但
我知道要使用它们,您必须导入 'package:flutter/cupertino.dart';并像这样使用它 Icon(CupertinoIcons.info); 但是很难选择需要的图标。 亲爱的
flutter 中的 Cupertino Picker 占用 100% 宽度。 我们如何给它自定义样式?高度、宽度、边框? 我试着把它放在一个宽度和所有的容器里,没有用。相反,当我给容器一个颜色时,有
我正在做一个几乎完成了 80% 的项目。我所有的项目都是在 Material 设计上完成的。现在我正在尝试为 Android 和 IOS 移动 Cupertino UI 主题。 当我尝试从 Mater
我有一个 Flutter 应用程序,它使用 Android 的 Material 主题和 iOS 的 Cupertino 主题。但我使用 Card小部件,这是一个 Material 小部件,在两个主题
我正在尝试检查用户的设备操作系统并向 iOS 用户显示库比蒂诺日期选择器,并向 Android 用户显示 Material 日期选择器。下面是我的代码 Future _selectDate(Build
我正在编写小部件测试 Cupertino Picker 以获取用户选择的不同值。我找不到任何好的教程。我关注了这个 https://github.com/flutter/flutter/blob/ma
如何创建(这是一个很好的做法)一个 Flutter 应用程序,它在 iOS 上显示 Cupertino UI 小部件,在 Android 上显示具有相同功能的 Material UI 小部件? 最佳答
我正在尝试在 Cupertino 应用程序中使用 ChoiceChip 小部件。 我找到了这个解决方案https://github.com/flutter/flutter/issues/21872#i
是否可以在 Material 应用程序中使用 flutter/cupertino.dart 中的一些小部件? (使用脚手架) 我想用 cupertino 风格而不是 Material 渲染 Switc
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 4 年前。 Improve
我遇到了一个问题,我需要使用标签导航。当前的 Material 脚手架只有 1 个堆栈。因此,如果我需要深入几个级别(子页面),那么我将失去选项卡上下文。 Cupertino 脚手架让我可以深入多个层
我是一名优秀的程序员,十分优秀!