欢迎光临散文网 会员登陆 & 注册

Flutter学习(二)基础知识

2023-09-05 14:10 作者:shiaouz  | 我要投稿

Dart语言的基本知识必须要掌握,关键字和运算符必须至少学习一遍。网上有很多教程,此处不展开来讲。可以参考官方文档https://flutter.cn/docs/resources/bootstrap-into-dart。

Flutter应用中,所有用户看到的“东西”皆是Widget。图片、按钮、文字这些常规的控件是我们熟悉的,还有布局(Stack,Align,Flex,ListView等),边距(Padding),可视(Visibility)等等,它们都是Widget。

下面看看Hello World中的两个Widget:

MaterialApp:Flutter自带的主题Widget,可以设置各种主题颜色,包含更多主题的Widget,例如Scaffold,TextField等。如果不用MaterialApp会怎样?结果就是连个输入框都没有,需要造轮子或者找轮子。

Scaffold:依赖MaterialApp的一个排版布局的Widget,支持很多功能,如标题,左边返回按钮,右边工具按钮,底部导航等。

其他Widget就不一一介绍了,想用的时候再去找就行。想查看全部Widget可以参考官方文档https://flutter.cn/docs/reference/widgets。


当我们学会了写界面的时候,接下来要做的大概就是界面的跳转和返回,这里贴一下自定义的方法:

void push(BuildContext context,Widget widget, {OnRouteResult? callback}) {

    Navigator.of(context).push(MaterialPageRoute<ApiResult>(builder: (context) => widget)).then((value) {

      callback?.call(value ?? ResultImpl(-1, "cancel"));

    });

  }

void pop(BuildContext context,[ApiResult? result]) {

    Navigator.of(context).maybePop(result);

  }

context:Widget内的变量,StatelessWidget中只有build方法才能获得context对象,可以在按钮的回调方法可以这么写onPressed: () => _doSomething(context),这样就可以拿到context对象;

widget:需要跳转的界面;

callback:需要监听从widget返回时携带的数据;

Navigator:Flutter的路由功能类;

MaterialPageRoute:Navigator.push方法的参数,MaterialPageRoute<ApiResult>表示widget返回的数据是ApiResult抽象类型,ResultImpl是ApiResult的实例;

then:Dart异步知识,不知道需要去学习Dart异步Future;

value:widget返回时携带的数据,可以是空。




Flutter学习(二)基础知识的评论 (共 条)

分享到微博请遵守国家法律