分类标签归档:Flutter

Flutter网络请求-使用WebSockets


Flutter网络请求-使用WebSockets

除了正常的HTTP请求外,我们还可以使用WebSocket连接到服务器。WebSocket允许与服务器进行双向通信而无需轮询。

在这个例子中,我们将连接到由 websocket.org提供的测试服务器 http://www.websocket.org/echo.html 。服务器将简单地返回我们发送给它的相同消息!

步骤

  1. 连接到WebSocket服务器。
  2. 监听来自服务器的消息。
  3. 将数据发送到服务器。
  4. 关闭WebSocket连接。

1. 连接到WebSocket服务器

web_socket_channel https://pub.dar...

阅读全文...

Flutter网络请求 - 从互联网上获取数据


从大多数应用程序都需要从互联网上获取数据,Dart和Flutter提供了相关工具!

步骤

1. 添加`http` package依赖
2. 使用`http` package发出网络请求
3. 将响应转为自定义的Dart对象
4. 获取并显示数据

1. 添加http package

http: https://pub.dartlang.org/packages/http package提供了从互联网获取数据的最简单方法。

dependencies:
  http: <latest_version>

2. 发起网络请求

在这个例子中,我们将使用 http.get:https://...

阅读全文...

Flutter导航 - 从新页面返回数据给上一个页面


在某些情况下,我们可能想要从新页面返回数据。例如,假设我们导航到了一个新页面,向用户呈现两个选项。当用户点击某个选项时,我们需要将用户选择通知给第一个页面,以便它能够处理这些信息!

我们如何实现?使用 Navigator.pop : https://docs.flutter.io/flutter/widgets/Navigator/pop.html

步骤

  1. 定义主页。
  2. 添加一个打开选择页面的按钮。
  3. 在选择页面上显示两个按钮。
  4. 点击一个按钮时,关闭选择的页面。
  5. 主页上弹出一个snackbar以显示用户的选择。

1. 定义主页

主页将显示一个按钮。点击后,它将打开选择页面!

class...

阅读全文...

Flutter网络请求-进行认证请求


为了从更多的Web服务获取数据,有些时候您需要提供授权。有很多方法可以做到这一点,但最常见的可能是使用HTTP header中的Authorization

添加 Authorization Headers

http : https://pub.dartlang.org/packages/http package提供了一种方便的方法来为请求添加headers。您也可以使用dart:iopackage来添加。

Future<http.Response> fetchPost() {
  return http.get(
    'https://jsonplacehold...

阅读全文...

Flutter导航 - 导航到新页面并返回


大多数应用程序包含多个页面。例如,我们可能有一个显示产品的页面,然后,用户可以点击产品,跳到该产品的详情页。

在Android中,页面对应的是Activity,在iOS中是ViewController。而在Flutter中,页面只是一个widget!

在Flutter中,我们那么我们可以使用 Navigator : https://docs.flutter.io/flutter/widgets/Navigator-class.html 在页面之间跳转。

步骤

  1. 创建两个页面。
  2. 调用Navigator.push导航到第二个页面。
  3. 调用Navigator.pop返回第一个页面。

1. 创建...

阅读全文...

Flutter导航-给新页面传值


通常,我们不仅要导航到新的页面 ,还要将一些数据传给页面。例如,我们想传一些关于我们点击的条目的信息。

请记住:页面只是Widgets™。在这个例子中,我们将创建一个Todos列表。当点击一个todo时,我们将导航到一个显示关于待办事项信息的新页面 (Widget)。

Directions

  1. 定义一个Todo类。
  2. 显示Todos列表。
  3. 创建一个显示待办事项详情的页面。
  4. 导航并将数据传递到详情页。

1. 定义一个 Todo 类

首先,我们需要一种简单的方法来表示Todos(待办事项)。在这个例子中,我们将创建一个包含两部分数据的类:标题和描述。

class Todo {
  ...

阅读全文...

Flutter 手势- 处理Taps


我们不仅希望向用户展示信息,还希望我们的用户与我们的应用互动!那么,我们如何响应用户基本操作,如点击和拖动? 在Flutter中我们可以使用 GestureDetector : https://docs.flutter.io/flutter/widgets/GestureDetector-class.html Widget!

假设我们想要创建一个自定义按钮,当点击时显示一个SnackBar。我们如何解决这个问题?

步骤

  1. 创建一个button。
  2. 把它包装在 GestureDetector中并提供一个onTap回调。
// Our GestureDetector wraps our bu...

阅读全文...

Flutter - 添加Material触摸水波效果


在设计应遵循Material Design指南的应用程序时,我们希望在点击时将水波动画添加到Widgets。

Flutter提供了 InkWell : https://docs.flutter.io/flutter/material/InkWell-class.html Widget来实现这个效果。

步骤

  1. 创建一个可点击的Widget。
  2. 将它包裹在一个InkWell中来管理点击回调和水波动画。
// The InkWell Wraps our custom flat button Widget
new InkWell(
  // When the user taps the butt...

阅读全文...

Flutter 手势- 实现滑动删除


“滑动删除”模式在移动应用中很常见。例如,如果我们正在编写一个电子邮件应用程序,我们希望允许我们的用户在列表中滑动电子邮件。当他们这样做时,我们需要将该条目从收件箱移至垃圾箱。

Flutter通过提供 Dismissable : https://docs.flutter.io/flutter/widgets/Dismissible-class.html Widget 使这项任务变得简单。

步骤

  1. 创建item列表。
  2. 将每个item包装在一个Dismissable Widget中。
  3. 提供滑动背景提示。

1. 创建item列表

第一步是创建一个我们可以滑动的列表。有关如何创建列表的更多详细...

阅读全文...

Flutter-创建一个水平list


有时,您可能想要创建一个水平滚动(而不是垂直滚动)的列表。 ListView : https://docs.flutter.io/flutter/widgets/ListView-class.html 本身就支持水平list。

在创建ListView时,设置scrollDirection为水平方向以覆盖默认的垂直方向。

new ListView(
  // This next line does the trick.
  scrollDirection: Axis.horizontal,
  children: <Widget>[
    new Container(
   ...

阅读全文...