Рубрики

Не указывайте типы параметров в выражениях функций.

Анонимные функции почти всегда сразу передаются методу, принимающим обратный вызов какого-либо типа. Когда выражение функции создается в типизированном контексте, Dart пытается вывести типы параметров функции на основе ожидаемого типа. Например, когда вы передаете выражение функции в Iterable.map(), тип параметра вашей функции выводится на основе типа обратного вызова, который ожидает map():

// Хорошо
var names = people.map((person) => person.name);
// Плохо
var names = people.map((Person person) => person.name);

Если язык может вывести нужный тип параметра в выражении функции, то не аннотируйте.

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

Рубрики

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

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

// Хороший код
void sayRepeatedly(String message, {int count = 2}) {
  for (var i = 0; i < count; i++) {
    print(message);
  }
}
// Не очень хороший код
void sayRepeatedly(message, {count = 2}) {  for (var i = 0; i < count; i++) {     
    print(message);   
  } 
}
   
Рубрики

Dart DevTools. Как отключить в Visual Studio Code

Отключение Dart DevTools

Иногда начинает сильно раздражать предустановленная опция включения Dart DevTools во Flutter VSCode. Этой опцией как правило не пользуются новички, она не нужна и при большинстве ежеминутных тестирований созданного приложения. Часто спрашивают как отключить данную функцию

На самом деле отключение займет у вас ровно 5 секунд. Откройте в Visual Studio Code вкладку Extensions (быстрые клавиши Ctrl+Shift+x) и найдите среди установленных расширений Dart (можете ввести в поиске dart). После этого кликните правой мышкой на расширении и выберите Extension Settings. Справа найдите опцию Open Dev Tools и в выпадающим списке выберите — never. После этого перезагрузите VSCode

Всё, больше данная опция мешать вам не будет. Удачи!

Рубрики

ThemeData во Flutter

Класс ThemeData во Flutter определяет конфигурацию общей отображаемой темы для MaterialApp или для дерева виджетов в приложении. Данное свойство MaterialApp можно использовать для настройки внешнего вида всего приложения. Если вы хотите в одном из виджетов (экранов приложения) изменить цвет или иное, то вам достаточно переопределить в верхней части поддерева Theme.

Т.е. иными словами, если у вас всегда будет применяться зеленый цвет во всех AppBar экранов в приложении, то вы можете всего лишь один раз задать в primaryColor: Colors.green и всегда у вас по умолчанию будет отображаться зеленый цвет. Это очень удобно, когда вы вдруг решили изменить цвет всех AppBar-ов, и вам не надо менять в каждом экране, достаточно просто его изменить в ThemeData после MaterialApp

Пример использования:

MaterialApp(
  theme: ThemeData(
    primaryColor: Colors.green,
    accentColor: Colors.white,
    textTheme: TextTheme(bodyText2: TextStyle(color: Colors.black)),
  ),
  home: Scaffold(
    appBar: AppBar(
      title: const Text('ThemeData демонстрация'),
    ),
    floatingActionButton: FloatingActionButton(
      child: const Icon(Icons.add),
      onPressed: () {},
    ),
    body: Center(
      child: Text(
        'Кнопка была нажата 0 раз',
      ),
    ),
  ),
)
Рубрики

Background Сolor или цвет фона во Flutter

Очень частый вопрос у новичков, как изменить фон у приложения Flutter. Самый простой путь, это указать в свойствах background виджета Scaffold необходимый фон.

//Обязательная строка для всех приложений
import 'package:flutter/material.dart';

void main() => runApp(new MyApp());

// Основной экран
class MyApp extends StatelessWidget {
  @override
    Widget build(BuildContext context) {

      return new MaterialApp(
        title: 'Меняем цвет фона в приложении',
        home: new Scaffold(
        //Сейчас мы установим цвет фона - красный
          backgroundColor: Colors.red,
        ),
      );
    }
}

Еще один вариант, который удобно использовать. Если вы вдруг решите изменить цвет фона на всех экранах. Это использование ThemeData в свойствах виджета MaterialApp

 MaterialApp(
      title: 'Установка цвета фона в начале кода',
      theme: ThemeData(scaffoldBackgroundColor: const Colors.green),
      home: MyFirstPage(title: 'Установлен цвет фона - зеленый'),
    );

Background color контейнера

Есть и более специфические способы, но они тоже иногда имеют место быть: данным кодом мы устанавливаем background контейнера на желтый