小编per*_*tus的帖子

如何平移和缩放图像?

我正在尝试为图像获得一些基本的平移和缩放功能。无状态版本可以显示图像(通过 Transform 旋转 180 度)并且 Scale 事件显示在日志中,但仅此而已。

GestureDetector获取平移/捏/展开事件的正确小部件吗?我应该查看转换、动画,还是应该只修改Image小部件内的字段?

无状态版本

// Wraps an Image widget to provide pan and zoom functionality.
class InteractiveImage extends StatelessWidget {
  InteractiveImage(this._image, {Key key}) : super(key: key);

  final Image _image;

  @override
  Widget build(BuildContext context) {
    return new Center(
      child: new GestureDetector(
        onScaleStart: (ScaleStartDetails details) => print(details),
        onScaleUpdate: (ScaleUpdateDetails details) => print(details),
        onScaleEnd: (ScaleEndDetails details) => print(details),
        child: new Transform(
          transform: new Matrix4.rotationZ(math.PI),
          alignment: FractionalOffset.center,
          child: _image,
        ),
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

有状态版本(不起作用) …

dart flutter

8
推荐指数
3
解决办法
2万
查看次数

如何使用async/HTTP数据在IndexedWidgetBuilder中返回子窗口小部件?

我正在通过HTTP获取JSON数据并将其显示在ListView中.因为它是HTTP,所以它都是异步的.

这是我想做的事情:

var index = new ListView.builder(
  controller: _scrollController,
  itemBuilder: (ctx, i) async {
    _log.fine("loading post $i");
    var p = await _posts[i];
    return p == null ? new PostPreview(p) : null;
  },
);
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用,因为IndexedWidgetBuilder必须是一个同步函数.如何使用Future为IndexedWidgetBuilder构建子级?似乎没有办法等待未来同步完成.

以前,我正在将数据加载到数组中,仅检查 IndexedWidgetBuilder函数以查看返回子窗口小部件之前是否存在列表元素.

var index = new ListView.builder(
  controller: _scrollController,
  itemBuilder: (ctx, i) {
    _log.fine("loading post $i");
    return _posts.length > i ? new PostPreview(_posts[i]) : null;
  },
);
Run Code Online (Sandbox Code Playgroud)

这有效,但我想将视图与数据完全分开,并根据需要异步请求JSON.

在我有限的经验中,这似乎也可能是一个常见的用例.可以将一个异步版本的IndexWidgetBuilder添加到flutter吗?

dart flutter

5
推荐指数
1
解决办法
665
查看次数

如何在弹出菜单中使用单选按钮?

我正在尝试创建一个包含可选单选按钮的弹出菜单,以更改视图类型(例如图库、卡片、滑动、网格、列表等)。

我遇到的问题是 PopupMenu 有自己的用于选择值的回调,Radio 和 RadioListTile 也是如此。

忽略 RadioListTile 的 onChanged

这是我的第一次尝试。这实际上有效,只是按钮永远变灰。给 RadioListTiles 一个非空的 noop 函数会导致按钮不再变灰(禁用),但弹出菜单不再起作用。

new PopupMenuButton<String>(
    ...
    itemBuilder: (ctx) => <PopupMenuEntry<String>>[
          new PopupMenuItem(
              child: new RadioListTile(
                  title: new Text("Cards"),
                  value: 'cards',
                  groupValue: _view,
                  onChanged: null),
              value: 'cards'),
          new PopupMenuItem(
              child: new RadioListTile(
                  title: new Text("Swipe"),
                  value: 'swipe',
                  groupValue: _view,
                  onChanged: null),
              value: 'swipe'),
        ],
    onSelected: (String viewType) {
      _view = viewType;
    }));
Run Code Online (Sandbox Code Playgroud)

使用 RadioListTile,忽略 PopupMenu

第二次尝试是完全忽略 PopupMenu 并只使用 RadioListTile onChanged。这些按钮没有变灰/禁用,但也不起作用。

new PopupMenuButton<String>(
  ...
  itemBuilder: (ctx) => <PopupMenuEntry<Null>>[ …
Run Code Online (Sandbox Code Playgroud)

dart flutter

5
推荐指数
2
解决办法
6239
查看次数

当Flutter解决NetworkImage时,如何捕获抛出的异常?

我的用例是在出现错误时显示小吃店,但由于未调用load:flutter ,所以无法捕获SocketException 。

更新(示例堆栈跟踪):

I/flutter (11702): ??? EXCEPTION CAUGHT BY SERVICES ???????????????????????????????????????????????????????????????????
I/flutter (11702): The following SocketException was thrown resolving a single-frame image stream:
I/flutter (11702): Connection failed (OS Error: Network is unreachable, errno = 101), address = (( snip )), port
I/flutter (11702): = 443
I/flutter (11702): When the exception was thrown, this was the stack:
I/flutter (11702): #0      IOClient.send (package:http/src/io_client.dart:30:23)
I/flutter (11702): <asynchronous suspension>
I/flutter (11702): #1      BaseClient._sendUnstreamed (package:http/src/base_client.dart:171:38)
I/flutter (11702): <asynchronous suspension>
I/flutter (11702): #2 …
Run Code Online (Sandbox Code Playgroud)

dart flutter

4
推荐指数
1
解决办法
1万
查看次数

如何获取点击位置 (GestureDetector)?

我正在尝试在我的zoomable_images 插件中实现双击缩放,但GestureTapCallback不提供点击位置信息。

理想情况下,偏移量将由回调返回。是否有其他 API 用于此?

dart flutter

3
推荐指数
1
解决办法
3698
查看次数

如何允许用户从文本小部件中选择文本?

在 Android 上,我习惯了TextView 的 textIsSelectable 属性,但在 Text 文档中没有看到。

目前我正在使用 TextField(可编辑)并且没有保存对显示文本的任何更改。我的主要需求是允许复制粘贴。

dart flutter

3
推荐指数
1
解决办法
963
查看次数

标签 统计

dart ×6

flutter ×6