kll85757 发表于 2021-7-11 01:16

赤色彗星SEXY 发表于 2021-7-11 16:17

用不会协程读懂python的 eventlet源码就行了
协程都差不多的,py的eventlet比较好读


正儿八经写flutter还是要会基本的app原生开发的,很多sdk支付什么的都没有flutter版
支付之类的sdk都接不上 挣个蛋的钱

EKVIN 发表于 2021-7-12 10:10

13号 发表于 2021-7-10 21:51
Flutter的Nativagor.push函数也是返回一个future的。

如果你每次pop之后都需要刷新,那么在push的那个页 ...

我尝试过寻找刷新的函数,但是找不到,这个dereload()放在函数里好像也报错了

13号 发表于 2021-7-12 10:31

本帖最后由 13号 于 2021-7-12 10:33 编辑

EKVIN 发表于 2021-7-12 10:10
我尝试过寻找刷新的函数,但是找不到,这个dereload()放在函数里好像也报错了 ...
我瞎写的。。。 doReload()意思是你得自己在这里做点事刷新。。。

具体doReload()该咋写要按照你的页面逻辑自己弄。。。
比如如果这是个网络请求的,你可以重新发起网络请求,在请求结束后设置数据(调用setState),页面自己就刷新了。。。

当然,你可以直接 setState(() {});但是感觉这样没有意义啊。
Flutter在一般情况下都是你设置数据,数据导致了页面对应做出了渲染。 所以一般不搞直接刷新,因为如果你数据没变化,刷新也就没意义了。

EKVIN 发表于 2021-7-12 11:01

13号 发表于 2021-7-12 10:31
我瞎写的。。。 doReload()意思是你得自己在这里做点事刷新。。。

具体doReload()该咋写要按照你的页面逻 ...

是一个网络请求。
我是打算实现这样的功能:
在帖子的内容页面点击一个按钮,用Navigator.push到回复框界面。
输入完回复内容之后点击发送,然后用Navigator.pop回到原来的帖子内容页面。
这个时候帖子会刷新一次重新发送网络请求,把回复内容之后的帖子内容展示。
我在构建帖子内容页面的时候,对每个回复是采用listview构造的,所以我就不太清楚如何再次刷新一次数据
https://z3.ax1x.com/2021/07/12/WP1pcj.png

13号 发表于 2021-7-12 11:33

好好看下文档关于setState的说法吧。
感觉写个function专门去取数据,然后取完之后setState,让页面渲染。
我猜你这个是按照官方文档写的,但你这个比官方文档这个略微复杂些。

建议搞两个state,一个status, 表示现在是不是在fetch, 一个response,是正式的返回的数据。
然后搞个方法,直接fetch(), 成功了之后修改status和reponse, 界面对应做渲染,这样也不需要FutureBuilder了。
Navigator.push这里按上面做的, 直接await Navigator.push;fetch(), 就可以了。

EKVIN 发表于 2021-7-15 21:12

13号 发表于 2021-7-12 11:33
好好看下文档关于setState的说法吧。
感觉写个function专门去取数据,然后取完之后setState,让页面渲染。 ...

恩,这个功能不是很要紧,我打算放一放
那能不能问问大佬,对于图文并排该怎么弄?
比如说,我从论坛的API获取了一大串字符串数据,其中夹杂着图片和文字。形式如同这样
https://z3.ax1x.com/2021/07/15/Wukjwn.png
那怎么在flutter中识别出这串字符是图片的地址,然后用flutter去渲染图片,替换原来的位置?
达到图文混排的效果?我想到用正则表达式去做,但不是很清楚怎么在text中去识别然后用图片替换

wanxx 发表于 2021-7-15 21:21

用过 React Native
在框架本身的问题之外 iOS 和 Android 交互模式的差别 是更需要考虑的问题
别迷信跨平台

13号 发表于 2021-7-15 22:04

本帖最后由 13号 于 2021-7-15 22:06 编辑

EKVIN 发表于 2021-7-15 21:12
恩,这个功能不是很要紧,我打算放一放
那能不能问问大佬,对于图文并排该怎么弄?
比如说,我从 ...

import 'package:html/parser.dart' show parse;

extension CapExtension on String {
String get inCaps => '${this.toUpperCase()}${this.substring(1)}';
String get allInCaps => this.toUpperCase();
}

extension DocumentParsing on String {
String get contentPreview {
    RegExp exp = RegExp(r"<[^>]*>", multiLine: true, caseSensitive: true);
    return replaceAll(exp, '').replaceAll('\n', ' ').trim();
}

String get imgPreview {
    var doc = parse(this);
    var img;
    try {
      img = doc.querySelector("img");
    } catch (e) {
      return null;
    }
    if (img == null) return null;
    RegExp re = RegExp(r"\.jpg|\.png|\.gif|\.jpeg|\.webp|\.bmp");
    String srcLink = img.attributes['src'];
    if (srcLink == null) return null;
    if (srcLink.contains(re)) {
      return srcLink;
    }
    return null;
}
}

刚好有个功能类似的函数。。。不过是通过css query取html里的数据, 略微改改就能用了吧。。。

EKVIN 发表于 2021-7-15 23:29

13号 发表于 2021-7-15 22:04
刚好有个功能类似的函数。。。不过是通过css query取html里的数据, 略微改改就能用了吧。。。
...

是从来没见过的写法
我去研究一下这些语法。
这个,如果用dio获取数据,也是一样的吧?

EKVIN 发表于 2021-7-15 23:31

EKVIN 发表于 2021-7-15 23:29
是从来没见过的写法
我去研究一下这些语法。
这个,如果用dio获取数据,也是一样的吧? ...

String get contentPreview {
    RegExp exp = RegExp(r"<[^>]*>", multiLine: true, caseSensitive: true);
    return replaceAll(exp, '').replaceAll('\n', ' ').trim();
}
是这个代码进行替换吗。。
替换的时候甚至可以用widget替换?

13号 发表于 2021-7-15 23:40

EKVIN 发表于 2021-7-15 23:31
是这个代码进行替换吗。。
替换的时候甚至可以用widget替换?
我懒得一行行删所以一次性copy过来了。。。
你上面都说了感觉应该用正则来匹配图片,这里一共就两个方法, 你觉得那个看起来更像是通过正则搜索图片的?

EKVIN 发表于 2021-7-15 23:49

13号 发表于 2021-7-15 23:40
我懒得一行行删所以一次性copy过来了。。。
你上面都说了感觉应该用正则来匹配图片,这里一共就两个方法, ...

哈哈哈,看起来像是第二个
页: 1 [2]
查看完整版本: 建个flutter踩坑交流楼