Перейти к основному содержимому

Утилитарные функции

Утилитарные функции необходимы для упрощения типичных задач в разработке приложений, таких как быстрые вычисления, форматирование данных и объединение строк.

В FlutterFlow вы можете легко интегрировать эти утилитарные функции при установке переменных из источников значений. Это позволяет упростить процессы, такие как вычисления, форматирование данных и обработку текста, непосредственно в визуальном конструкторе.

В FlutterFlow доступны следующие встроенные функции:

  • Объединение текста: Встроенная функция, которая позволяет объединять строки, упрощая соединение нескольких текстовых элементов в единое целое.

  • Встроенная функция: Эта функция позволяет быстро и эффективно выполнять простые вычисления и манипуляции с данными.

Объединение текста

Часто возникают ситуации, когда нужно отобразить две переменные в одной строке или виджете Text. Например, в нашем приложении Демо электронной коммерции есть объект цены в следующем формате:


"price": {
"currency": "$",
"amount": 25.50
}

Однако при отображении данных в пользовательском интерфейсе следует объединить значение валюты и сумму, поскольку они имеют смысл только вместе.

В таких случаях можно использовать встроенную функцию Объединение текста, доступную во всех источниках значений, которые принимают String. Вы можете объединить любое количество динамических и статических переменных, даже если они сами по себе не являются Strings. В итоге итоговое значение всегда будет строкой, поскольку оно устанавливается в виджет, который принимает только типы данных String.

Вот краткая демонстрация:

Объединение текста против виджета RichText

Встроенная функция Объединение текста позволяет объединять несколько значений (динамических или статических) вместе с применением одного и того же стиля текста ко всем. Если нужно объединить несколько строковых значений с разными стилями текста для каждого, рассмотрите использование виджета RichText.

Встроенная функция (Выражения кода)

к сведению

Code Expressions было переименовано в Inline Functions начиная с версии FlutterFlow 6.0.

Часто требуется быстро отформатировать данные, преобразовать тип данных из одной формы в другую или выполнить простое вычисление перед установкой переменной в источник данных, такой как источник значения виджета.

Встроенная функция — это фрагмент кода, который объединяет операторы, переменные и/или значения для получения результата. Она может использоваться для арифметических и логических операций, а также для других задач.

Чтобы добавить встроенную функцию, откройте диалог Установить из переменной в любом месте, где возможно установить динамическое значение, и выберите значения, которые войдут в состав встроенной функции.

Например, можно быстро рассчитать сумму скидки на товар, где скидка составляет 18% от рекомендованной розничной цены (MRP) товара. Выражение будет выглядеть как cost - (cost * discount).

подсказка

Хотите больше мощности и гибкости? Используйте новое Выражение пользовательского кода. Это более продвинутая версия встроенных функций, которая позволяет обращаться к ресурсам, сгенерированным FlutterFlow, без передачи их в качестве аргументов. Кроме того, вы получаете автодополнение в реальном времени и проверку ошибок в строке для более быстрой и точной логики.

Приоритет операций

Встроенные функции для математических операций следуют стандартному приоритету (например, умножение/деление перед сложением/вычитанием), но скобки могут изменить порядок.

В этом случае необходимые переменные — cost и discount.

Таким образом, мы создаем два аргумента в диалоге Встроенная функция, где они содержат значения cost и discount, присваиваем тип данных для каждого аргумента и определяем тип возвращаемого значения итогового результата. В данном случае тип возвращаемого значения — double, поскольку оно содержит сумму subtotal.

Теперь вы можете написать встроенную функцию в поле Expression и нажать Check Errors, чтобы проверить, является ли выражение допустимым. Если оно допустимо, вы увидите сгенерированный код для него.

Аргументы в встроенной функции могут иметь следующие свойства:

DataTypeSupports NullableSupports List
String
Integer
Double
Boolean
Colors

Распространенные примеры

Вот несколько распространенных выражений, которые вы можете использовать для бизнес-логики:

ExpressionDescriptionExampleReturn Type
contains()Проверяет, содержит ли строка определенную подстроку.text1.contains(text2)bool
split()Разбивает строку на список подстрок.text.split(",")List<String>
toLowerCase() или toUpperCase()Преобразует все символы в строке в нижний регистр.text.toLowerCase()String
contains()Проверяет, содержит ли список определенный элемент.fruits.contains("apple")bool
max()Возвращает большее из двух чисел.math.max(a, b)int
toDouble()Преобразует целое число в Double.intValue.toDouble()double
int.parse(s)Преобразует строку в целое число.int.parse(stringValue)int

Выражение пользовательского кода

Выражение пользовательского кода позволяет писать короткий код на Dart непосредственно в полях свойств виджетов и потоках действий в FlutterFlow. Это более мощная версия Встроенной функции, которая позволяет напрямую обращаться к классам, сгенерированным FlutterFlow, глобальным переменным, свойствам виджетов, параметрам и другим элементам без необходимости вручную передавать их в качестве входных данных.

Выражения пользовательского кода также поддерживают автодополнение в реальном времени, что упрощает обнаружение доступных полей по мере набора текста. Например, при вводе FFAppState(). система предложит все доступные переменные состояния приложения вместе с их типами.

Кроме того, встроенная проверка предоставляет немедленную обратную связь во время написания, помогая выявлять синтаксические ошибки или недопустимые ссылки на свойства.

к сведению

Чтобы использовать выражение пользовательского кода, у вас должен быть активный платный план FlutterFlow.

подсказка
  • Чтобы узнать, к чему можно обратиться в выражении пользовательского кода, обратитесь к странице Распространенные примеры.
  • Нажмите ^ + Space (или Ctrl + Space), чтобы увидеть подсказки по доступным элементам в выражении пользовательского кода.
  • Вы можете обращаться к значениям внутри пользовательских структур. Например, можно использовать FFAppState().localDeviceInfo.osVersion, если это поле существует в состоянии приложения.
  • Чтобы лучше использовать выражения пользовательского кода, полезно понять, как FlutterFlow строит ваш проект за кулисами. Вы можете ознакомиться со страницей Управление состоянием и другими разделами Generated Code, чтобы узнать, как все настроено.

Вот несколько примеров, показывающих, как обращаться к состоянию приложения и состоянию страницы в выражении пользовательского кода:

  • Доступ к состоянию приложения: Например, чтобы проверить, включен ли темный режим, с использованием переменной состояния приложения:

    FFAppState().enableDarkMode ? 'Dark Mode On' : 'Light Mode Off'

    Это обращение к глобальной булевой переменной enableDarkMode, хранящейся в FFAppState, и возвращает строку на основе ее значения.

  • Доступ к состоянию страницы и компонента: Например, чтобы обратиться к переменной состояния страницы или компонента, такой как searchText, начните с _model. и выберите переменную из подсказок автодополнения.

    _model.searchText.isEmpty ? '' : 'Searching for "${_model.searchText}"'

    Это выражение проверяет, пуста ли переменная searchText (определенная как состояние страницы), и возвращает соответствующее сообщение. Объект _model относится к модели состояния, сгенерированной для текущей страницы.

Вот пример добавления выражения пользовательского кода:

Выполнить пользовательский код [Действие]

Чтобы использовать выражение пользовательского кода при запуске действий в FlutterFlow (т. е. внутри потока действий), можно применить действие Выполнить пользовательский код. Это позволяет запускать выражение на Dart при возникновении события, например при нажатии кнопки или после загрузки страницы.

execute-custom-code.avif

Действие Выполнить пользовательский код может быть очень полезным в сценариях, когда домашняя страница удаляется из стека навигации на раннем этапе и стандартная навигация с использованием локального контекста может завершиться неудачей. Чтобы предотвратить это, можно использовать глобальный контекст навигатора внутри выражения кода.

Пользовательские функции

Вы также можете использовать пользовательские функции для обработки немного более сложных вычислений или для работы с более широким спектром типов данных, которые не поддерживаются во встроенных функциях.

к сведению

ЧАВО

Чем выражение пользовательского кода отличается от встроенной функции?

Выражение пользовательского кода — это более продвинутая и гибкая версия встроенной функции.

С встроенными функциями приходилось вручную передавать значения в качестве аргументов. В отличие от этого, выражения пользовательского кода позволяют напрямую ссылаться на ресурсы, сгенерированные FlutterFlow (такие как FFAppState(), _model, context и другие), без необходимости их передачи.

Вы можете писать любое допустимое выражение на Dart в выражении пользовательского кода, даже многострочную логику с использованием анонимных функций. Кроме того, выражения пользовательского кода поддерживают автодополнение в реальном времени и проверку ошибок в строке, что значительно упрощает обнаружение доступных переменных и избежание ошибок.