flutter组件总结

Posted mvloveyouforever

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flutter组件总结相关的知识,希望对你有一定的参考价值。

1、监听事件:以 Listener包裹组件支持的监听包含: onPointerDown,onPointerMove,onPointerUp,onPointerCancel。

      同 Listener 类似,有 IgnorePointer(忽略本身),和AbsorbPointer(不忽略本身)。 忽略事件。

      更强大的手势组件 GestureDetector (onTap) , 如果需要有波纹效果则用 InkWell代替,具有类似效果的还有RaisedBuitton、FlatButton、CupertinoButton。

2、

InkWell(波纹显示按压效果组件同GestureDetector)   必须以Material 组件为祖先,点击(出现波纹)组件.

double sideLength = 50;

Widget build(BuildContext context) {
  return AnimatedContainer(
    height: sideLength,
    width: sideLength,
    duration: Duration(seconds: 2),
    curve: Curves.easeIn,
    child: Material(
      color: Colors.yellow,
      child: InkWell(
        onTap: () {
          setState(() {
            sideLength == 50 ? sideLength = 100 : sideLength = 50;
          });
        },
      ),
    ),
  );
}

 

3、column和row 不支持滚动,如果要滚动请选用ListView ,复杂列表滚动效果:GridView和CustomScrollView(多列竖向滚动)。

     row 撑破横向的情况下,可以用wrap代替row

4、InheritedWidget  父节点

 

5、runZoned 代码执行环节范围,自定义一些代码行为,比如拦截日志输出行为等。

下面是拦截应用中所有调用print输出日志的行为

main() {
  runZoned(() => runApp(MyApp()), zoneSpecification: new ZoneSpecification(
      print: (Zone self, ZoneDelegate parent, Zone zone, String line) {
        parent.print(zone, "Intercepted: $line");
      }),
  );
}

异常捕获

runZoned(() {
    runApp(MyApp());
}, onError: (Object obj, StackTrace stack) {
    var details=makeDetails(obj,stack);
    reportError(details);
});

需要注意的是,error-zone内部发生的错误是不会跨越当前error-zone的边界的,如果想跨越error-zone边界去捕获异常,可以通过共同的“源”zone来捕获,如

var future = new Future.value(499);
runZoned(() {
    var future2 = future.then((_) { throw "error in first error-zone"; });
    runZoned(() {
        var future3 = future2.catchError((e) { print("Never reached!"); });
    }, onError: (e) { print("unused error handler"); });
}, onError: (e) { print("catches error of first error-zone."); });

6、

 

以上是关于flutter组件总结的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 裁剪类组件 最全总结

flutter组件总结

错误记录Flutter 混合开发获取 BinaryMessenger 报错 ( FlutterActivityAndFragmentDelegate.getFlutterEngine() )(代码片段

全网最详细的一篇Flutter 尺寸限制类容器总结

Flutter常用组件和属性总结

在 webview_flutter 中启用捏合和缩放,在哪里添加代码片段 [this.webView.getSettings().setBuiltInZoomControls(true);]