Вопросы по тегу: dart

(87)

Как я могу размещать виджеты в зависимости от размера родителя?

Допустим, у вас есть родительский виджет, который может иметь переменный размер.Например:var container = new Container( height: 200.0, // Imagine this might change width: 200.0, // Imagine this might change // Imagine content in this container will // depend on the parent container child: new Container(), ); И, возможно, вы хотите, чтобы дочерний элемент родительского контейнера отображал что-то другое в зависимости от заданного размера.Подумайте о контрольных точках адаптивного дизайна: если ширина больше X, используйте этот макет, если ширина меньше X, используйте этот макет.Как лучше всего это сделать во Flutter?
D

Dvdwasibi

5 лет назад

Ответов: 6

Как убрать свечение прокрутки?

По умолчанию флаттер добавляет светящийся эффект на ListView/GridView/... к прокрутке на телефонах AndroidЯ хотел бы удалить этот эффект полностью или для одного конкретного прокручиваемого элемента. Я знаю, что могу изменить ScrollPhysics для переключения между Bounce/Clamp. Но на самом деле это не удаляет эффект свечения.Что я могу сделать?
R

Rémi Rousselet

4 года назад

Ответов: 11

Как настроить устройства для Visual Studio Code для эмулятора Flutter

Я хотел бы использовать Visual Studio Code в качестве редактора для разработки Flutter, но я не знаю, как запустить эмулятор. Я установил Visual Studio Code на Ubuntu 17.10 (Artful Aardvark).Я следовал первой половине инструкций, изложенных на странице Flutter: Начало работы (Создание нового приложения). Затем я столкнулся с проблемой во втором тайме: Запустить приложение Убедитесь, что целевое устройство выбрано в правом нижнем углу VS Code Нажмите кнопку F5 на клавиатуре или вызовите Debug>Start Debugging Дождитесь запуска приложения Если все работает, после сборки приложения вы должны увидеть стартовое приложение на своем устройстве или симуляторе: Проблема в том, что в правом нижнем углу стоит надпись «Нет устройств».Как подключить устройство? Я нигде не могу найти инструкции.
C

Charles Thomas Ingles

4 года назад

Ответов: 19

как добавить собственный цвет для флаттера?

Я хочу изменить цвет AppBar и использовать для него собственный цвет, я пробовал много вариантов, но ни один из них не работает. Я что-то упустил?import 'package:flutter/material.dart'; final ThemeData CompanyThemeData = new ThemeData( brightness: Brightness.light, primaryColorBrightness: Brightness.light, accentColor: CompanyColors.black[500], accentColorBrightness: Brightness.light ); class CompanyColors { CompanyColors._(); // this basically makes it so you can instantiate this class static const _blackPrimaryValue = 0xFF000000; static const MaterialColor black = const MaterialColor( _blackPrimaryValue, const { 50: const Color(0xFFe0e0e0), 100: const Color(0xFFb3b3b3), 200: const Color(0xFF808080), 300: const Color(0xFF4d4d4d), 400: const Color(0xFF262626), 500: const Color(_blackPrimaryValue), 600: const Color(0xFF000000), 700: const Color(0xFF000000), 800: const Color(0xFF000000), 900: const Color(0xFF000000), }, ); } , а затем я использовал его в main.dart какWidget build(BuildContext context) { return new MaterialApp( title: 'Flutter Demo', theme: new ThemeData( // This is the theme of your application. // // Try running your application with "flutter run". You'll see the // application has a blue toolbar. Then, without quitting the app, try // changing the primarySwatch below to Colors.green and then invoke // "hot reload" (press "r" in the console where you ran "flutter run", // or press Run > Flutter Hot Reload in IntelliJ). Notice that the // counter didn't reset back to zero; the application is not restarted. primarySwatch:Theme1.CompanyColors.black[50], ), home: new MyHomePage(title: 'Flutter Demo Home Page'), ); } но после выполнения пишет тип Color не относится к подтипу MaterialColor
K

Karishma

4 года назад

Ответов: 18

Как десериализовать список объектов из json во флаттере

Я использую пакет dart json_serializable для сериализации json. Глядя на документацию по флаттеру, он показывает, как десериализовать один объект следующим образом:Future fetchPost() async { final response = await http.get('https://jsonplaceholder.typicode.com/posts/1'); if (response.statusCode == 200) { // If the call to the server was successful, parse the JSON return Post.fromJson(json.decode(response.body)); } else { // If that call was not successful, throw an error. throw Exception('Failed to load post'); } } Однако я недостаточно знаком с dart, чтобы понять, как сделать то же самое для списка элементов вместо одного экземпляра.
G

Gainz

4 года назад

Ответов: 10

Как сделать AlertDialog во Flutter?

Я учусь создавать приложения во Flutter. Теперь я пришел к диалогам оповещения. Я делал их раньше в Android и iOS, но как мне сделать оповещение во Flutter?Вот некоторые связанные вопросы SO: Как стилизовать действия AlertDialog во Flutter добавление раскрывающегося меню в диалоговом окне предупреждения во флаттере Показывать диалоговое окно предупреждения на главном экране приложения автоматически загружаться как обновить диалог предупреждений во флаттере Диалоговое окно оповещения со скругленными углами в флаттере Я хотел бы сделать более общий канонический вопрос и ответ, поэтому мой ответ ниже.
S

Suragch

3 года назад

Ответов: 10

Flutter: ListView отключает прокрутку с помощью сенсорного экрана

Можно ли разрешить прокрутку ListView только с помощью ScrollController, а не с помощью сенсорного экрана?
T

Tobias Gubo

4 года назад

Ответов: 6

Множественные конструкторы Dart

Неужели в dart невозможно создать несколько конструкторов для класса?в моем классе игроков, если у меня есть этот конструкторPlayer(String name, int color) { this._color = color; this._name = name; } Затем я пытаюсь добавить этот конструктор:Player(Player another) { this._color = another.getColor(); this._name = another.getName(); } Я получаю следующую ошибку: Конструктор по умолчанию уже определен. Я не ищу обходной путь, создавая один конструктор с кучей необязательных аргументов.Есть ли хороший способ решить эту проблему?
T

Tom Porat

4 года назад

Ответов: 8

Эквивалент RelativeLayout во Flutter

Есть ли способ реализовать что-то похожее на то, что RelativeLayout делает на Android?В частности, я ищу что-то похожее на centerInParent, layout_below:, layout_above:и alignParentLeftДополнительные сведения о RelativeLayout: https://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.htmlEDIT: вот пример макета, основанного на RelativeLayoutИтак, на изображении выше текст «Песни тофу» выровнен как centerInParent внутри RelativeLayout. В то время как другие 2 — это alignParentLeft и alignParentRightВ каждой ячейке, где находится значок огня, количество отметок «Нравится» внизу выровнено по центру значка пламени. Кроме того, верхний и нижний заголовок в каждой ячейке выравниваются по правому краю и по верхнему и нижнему краю изображения аватара соответственно.
u

user3217522

5 лет назад

Ответов: 4

Итерация по списку для рендеринга нескольких виджетов во Flutter?

У меня есть список строк, определенных следующим образом:var list = ["one", "two", "three", "four"]; Я хочу отображать значения на экране рядом друг с другом с помощью текстовых виджетов. Я попытался использовать следующий код, чтобы попытаться это сделать:for (var name in list) { return new Text(name); } Однако, когда я запускаю этот код, цикл for запускается только один раз, и отображается только один текстовый виджет, который говорит one (первый элемент в списке). Кроме того, когда я добавляю сообщение журнала в свой цикл for, оно также запускается один раз. Почему мой цикл for не основан на длине списка? Кажется, он запускается только один раз, а затем завершает работу.
r

rakeshdas

4 года назад

Ответов: 11

Как лучше всего сохранить все константы во Flutter?

Как лучше всего программировать создать постоянный класс во Flutter , чтобы сохранить все константы приложения для удобства. Я знаю, что в Dart есть ключевое слово const для создания постоянных полей, но можно ли использовать static вместе с const, или это создаст проблемы с памятью во время выполнения.*100006 *class Constants { static const String SUCCESS_MESSAGE=" You will be contacted by us very soon."; }
M

Manoj Perumarath

3 года назад

Ответов: 10

Необработанное исключение: InternalLinkedHashMap<String, dynamic>не является подтипом типа List<dynamic>

Я пытаюсь получить ответ JSON от сервера и вывести его на консоль.Future login() async { var response = await http.get( Uri.encodeFull("https://etrans.herokuapp.com/test/2"), headers: {"Accept": "application/json"}); this.setState(() { data = json.decode(response.body); }); print(data[0].name); return "Success!"; } Необработанное исключение: тип '_InternalLinkedHashMap' не подтип типа 'List В чем может быть причина?
h

harunB10

3 года назад

Ответов: 12

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

Как использовать локальный пакет флаттера в другом приложении флаттера?Я создал пакет с помощью следующей команды:flutter create --template=package my_new_package , а затем в исходном коде моего приложения => main.dartimport "package:my_new_package/my_new_package.dart" // can not find the package
b

behzad besharati

4 года назад

Ответов: 4

Dart: создать список от 0 до N

Как я могу легко создать диапазон последовательных целых чисел в дротике? Например:// throws a syntax error :) var list = [1..10];
C

Cequiel

6 лет назад

Ответов: 8

как открыть определенный экран при нажатии на push-уведомление для флаттера

Я пытаюсь открыть определенный экран при нажатии на push-уведомление, и моя полезная нагрузка выглядит так: var payload = { notification: { title: notificationTitle, body: notificationMessage, click_action:"/screena",sound:"default", } }; Я получаю уведомление, но не могу поймать событие щелчка уведомления в флаттере, как его поймать. Я использую флаттер-сообщенияhttps://github.com/flutter/plugins/tree/master/packages/firebase_messagingи мой код службы push-сообщений firebase выглядит так pushMessagingService() async{ messagingreference.configure( onMessage: (Map message) { print("I am here in on message"); print(message); }, onLaunch: (Map message) { print("I am here onLaunch"); print(message); }, onResume: (Map message) { print("I am hereonResume"); print(message); }, ); messagingreference.requestNotificationPermissions( const IosNotificationSettings(sound: true, badge: true, alert: true)); messagingreference.onIosSettingsRegistered .listen((IosNotificationSettings settings) { print("Settings registered: $settings"); }); messagingreference.getToken().then((String token) async { print(token); }); } здесь я могу получить сообщение, как @xqwzts сказал в сообщении, когда мое приложение находится на переднем плане, но мой вопрос заключается в том, как перехватить событие щелчка из push-уведомления, поднятого на панели задач, и перейти к нужному экрану.
s

siva kumar

4 года назад

Ответов: 14

Что такое нулевая безопасность в Dart?

Я слышал о новой функции языка безопасности Dart null (NNBD), которая в настоящее время является «экспериментом, не допускающим обнуления». Предполагается ввести non-nullable по умолчанию.Спецификация функции может быть здесь и язык выпуск GitHub здесь.Как это работает и где можно попробовать?
c

creativecreatorormaybenot

2 года назад

Ответов: 2

Converting timestamp

I couldn't find a solution to this, I'm grabbing data from firebase and one of the fields is a timestamp which looks like this -> 1522129071. How to convert it to a date? Swift example (works) : func readTimestamp(timestamp: Int) { let now = Date() let dateFormatter = DateFormatter() let date = Date(timeIntervalSince1970: Double(timestamp)) let components = Set([.second, .minute, .hour, .day, .weekOfMonth]) let diff = Calendar.current.dateComponents(components, from: date, to: now) var timeText = "" dateFormatter.locale = .current dateFormatter.dateFormat = "HH:mm a" if diff.second! 0 && diff.minute! == 0 || diff.minute! > 0 && diff.hour! == 0 || diff.hour! > 0 && diff.day! == 0 { timeText = dateFormatter.string(from: date) } if diff.day! > 0 && diff.weekOfMonth! == 0 { timeText = (diff.day == 1) ? "\(diff.day!) DAY AGO" : "\(diff.day!) DAYS AGO" } if diff.weekOfMonth! > 0 { timeText = (diff.weekOfMonth == 1) ? "\(diff.weekOfMonth!) WEEK AGO" : "\(diff.weekOfMonth!) WEEKS AGO" } return timeText } My attempt at Dart: String readTimestamp(int timestamp) { var now = new DateTime.now(); var format = new DateFormat('HH:mm a'); var date = new DateTime.fromMicrosecondsSinceEpoch(timestamp); var diff = date.difference(now); var time = ''; if (diff.inSeconds 0 && diff.inMinutes == 0 || diff.inMinutes > 0 && diff.inHours == 0 || diff.inHours > 0 && diff.inDays == 0) { time = format.format(date); // Doesn't get called when it should be } else { time = diff.inDays.toString() + 'DAYS AGO'; // Gets call and it's wrong date } return time; } And it returns dates/times that are waaaaaaay off. UPDATE: String readTimestamp(int timestamp) { var now = new DateTime.now(); var format = new DateFormat('HH:mm a'); var date = new DateTime.fromMicrosecondsSinceEpoch(timestamp * 1000); var diff = date.difference(now); var time = ''; if (diff.inSeconds 0 && diff.inMinutes == 0 || diff.inMinutes > 0 && diff.inHours == 0 || diff.inHours > 0 && diff.inDays == 0) { time = format.format(date); } else { if (diff.inDays == 1) { time = diff.inDays.toString() + 'DAY AGO'; } else { time = diff.inDays.toString() + 'DAYS AGO'; } } return time; }
M

Mohamed Mohamed

4 года назад

Ответов: 20

Как преобразовать строку даты/времени в объект DateTime в Dart?

Скажем, у меня есть строка "1974-03-20 00:00:00.000" Он создан с использованием DateTime.now(), как преобразовать строку обратно в объект DateTime?
D

Daniel Mana

4 года назад

Ответов: 7

Флаттер Таймер обратного отсчета

Как я могу поместить значение, переданное в конструкцию, чтобы сделать таймер, который округляет до первого десятичного знака и показывает дочерний текст моей RaisedButton? Я пытался, но безуспешно. Мне удается заставить работать функцию обратного вызова с помощью простого таймера, но без периодического и без обновления значения в реальном времени в тексте...import 'package:flutter/material.dart'; import 'dart:ui'; import 'dart:async'; class TimerButton extends StatefulWidget { final Duration timerTastoPremuto; TimerButton(this.timerTastoPremuto); @override _TimerButtonState createState() => _TimerButtonState(); } class _TimerButtonState extends State { @override Widget build(BuildContext context) { return Container( margin: EdgeInsets.all(5.0), height: 135.0, width: 135.0, child: new RaisedButton( elevation: 100.0, color: Colors.white.withOpacity(.8), highlightElevation: 0.0, onPressed: () { int _start = widget.timerTastoPremuto.inMilliseconds; const oneDecimal = const Duration(milliseconds: 100); Timer _timer = new Timer.periodic( oneDecimal, (Timer timer) => setState(() { if (_start
F

Floris Marpepa

3 года назад

Ответов: 13

Как вы определяете хост-платформу из кода Dart?

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

Gavin

4 года назад

Ответов: 14

В чем разница между ключевыми словами "const" и "final" в Dart?

В чем разница между ключевым словом const и final в Dart?
I

Ishmal Ijaz

4 года назад

Ответов: 15

Как отключить экранную клавиатуру?

Я собираю пользовательский ввод с помощью TextFormField, и когда пользователь нажимает FloatingActionButton, указывая, что они выполнены, я хочу закрыть экранную клавиатуру.Как сделать так, чтобы клавиатура исчезла автоматически?import 'package:flutter/material.dart'; class MyHomePage extends StatefulWidget { MyHomePageState createState() => new MyHomePageState(); } class MyHomePageState extends State { TextEditingController _controller = new TextEditingController(); @override Widget build(BuildContext context) { return new Scaffold( appBar: new AppBar(), floatingActionButton: new FloatingActionButton( child: new Icon(Icons.send), onPressed: () { setState(() { // send message // dismiss on screen keyboard here _controller.clear(); }); }, ), body: new Container( alignment: FractionalOffset.center, padding: new EdgeInsets.all(20.0), child: new TextFormField( controller: _controller, decoration: new InputDecoration(labelText: 'Example Text'), ), ), ); } } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return new MaterialApp( home: new MyHomePage(), ); } } void main() { runApp(new MyApp()); }
C

Collin Jackson

5 лет назад

Ответов: 23

Show/hide widgets in Flutter programmatically

In Android, every single View subclass has a setVisibility() method that allows you modify the visibility of a View objectThere are 3 options of setting the visibility: Visible: Renders the View visible inside the layout Invisible: Hides the View, but leaves a gap that is equivalent to what the View would occupy if it were visible Gone: Hides the View, and removes it entirely from the layout. It's as if its height and width were 0dp Is there something equivalent to the above for Widgets in Flutter?For a quick reference: https://developer.android.com/reference/android/view/View.html#attr_android:visibility
u

user3217522

5 лет назад

Ответов: 16

How can I add shadow to the widget in flutter?

How can I add shadow to the widget like in the picture below? This is my current widget code.
M

Mohammed Mustafa

3 года назад

Ответов: 12

Как выделить (или отформатировать) текст в абзаце жирным шрифтом?

Как получить строку текста с разным форматированием?например:Привет Мир
D

Dvdwasibi

5 лет назад

Ответов: 6

Как бороться с нежелательной сборкой виджетов?

По разным причинам иногда метод build моих виджетов вызывается снова.Я знаю, что это происходит из-за обновления родителя. Но это вызывает нежелательные эффекты. Типичная ситуация, когда это вызывает проблемы, - это использование FutureBuilder следующим образом:@override Widget build(BuildContext context) { return FutureBuilder( future: httpCall(), builder: (context, snapshot) { // create some layout here }, ); } В этом примере, если метод build должен быть вызван снова, он инициирует другой HTTP-запрос. Что нежелательно.Учитывая это, как бороться с нежелательной сборкой? Есть ли способ предотвратить вызов сборки?
R

R&#233;mi Rousselet

3 года назад

Ответов: 5

Как установить фоновое изображение во Flutter?

Я пытаюсь установить фоновое изображение для домашней страницы. Я получаю изображение с начала экрана и заполняю ширину, но не высоту. Мне что-то не хватает в моем коде? Есть ли стандарты изображения для флаттера? Масштабируются ли изображения в зависимости от разрешения экрана каждого телефона?class BaseLayout extends StatelessWidget{ @override Widget build(BuildContext context){ return new Scaffold( body: new Container( child: new Column( mainAxisAlignment: MainAxisAlignment.start, children: [ new Image.asset("assets/images/bulb.jpg") ] ) ) ); } }
A

Arun Kumar

5 лет назад

Ответов: 15

Как установить пользовательскую высоту для виджета в GridView во Flutter?

Даже после указания высоты для контейнера GridView мой код создает квадратные виджеты.class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => new _MyHomePageState(); } class _MyHomePageState extends State { List widgetList = ['A', 'B', 'C']; @override Widget build(BuildContext context) { return new Scaffold( appBar: new AppBar( title: new Text(widget.title), ), body: new Container( child: new GridView.count( crossAxisCount: 2, controller: new ScrollController(keepScrollOffset: false), shrinkWrap: true, scrollDirection: Axis.vertical, children: widgetList.map((String value) { return new Container( height: 250.0, color: Colors.green, margin: new EdgeInsets.all(1.0), child: new Center( child: new Text( value, style: new TextStyle(fontSize: 50.0,color: Colors.white), ), ), ); }).toList(), ), ), ); } } Результат приведенного выше кода показан слева. Как я могу получить GridView с виджетом настраиваемой высоты, как показано справа?
A

Ajay Kumar

4 года назад

Ответов: 10

тип List<dynamic>не является подтипом типа List<Widget>

У меня есть фрагмент кода, который я скопировал из примера Firestore:Widget _buildBody(BuildContext context) { return new StreamBuilder( stream: _getEventStream(), builder: (context, snapshot) { if (!snapshot.hasData) return new Text('Loading...'); return new ListView( children: snapshot.data.documents.map((document) { return new ListTile( title: new Text(document['name']), subtitle: new Text("Class"), ); }).toList(), ); }, ); } а вот такая ошибкаtype 'List' is not a subtype of type 'List' Что здесь не так?
A

Arash

4 года назад

Ответов: 9

Виджет стека положения флаттера в центре

У меня есть виджеты в стеке, поэтому я хотел бы расположить панель кнопок внизу по центру стека, но ничего не работает. Виджет просто прилипает к левой стороне. вот мой код.new Positioned( bottom: 40.0, child: new Container( margin: const EdgeInsets.all(16.0), child: new Column( mainAxisAlignment: MainAxisAlignment.center, children: [ new Align( alignment: Alignment.bottomCenter, child: new ButtonBar( alignment: MainAxisAlignment.center, children: [ new OutlineButton( onPressed: () { Navigator.push( context, new MaterialPageRoute( builder: (context) => new LoginPage())); }, child: new Text( "Login", style: new TextStyle(color: Colors.white), ), ), new RaisedButton( color: Colors.white, onPressed: () { Navigator.push( context, new MaterialPageRoute( builder: (context) => new RegistrationPage())); }, child: new Text( "Register", style: new TextStyle(color: Colors.black), ), ) ], ), ) ], ), ), ) Я перепробовал буквально каждое выравнивание по центру, пожалуйста, помогите
s

spongyboss

4 года назад

Ответов: 12

2022 WebDevInsider