Ошибка компиляции дротика из-за EdgeInsets.all при использовании значения в глобальной переменной - PullRequest
0 голосов
/ 07 января 2019

Ошибка:

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

Код:

import 'package:flutter/material.dart';

    main() {
      runApp(MyApp());
    }

    class MyApp extends StatefulWidget{
    @override
    State<StatefulWidget> createState() {
        // TODO: implement createState
        return _MyAppState();
      }
    }

    class _MyAppState extends State<MyApp> {
      List<String> _products = ['Food Tester'];
      var _font_size = 20.0;

      build(context) {
        return MaterialApp(
            home: Scaffold(
          appBar: AppBar(
            title: Text('EasyList'),
          ),
          body: Column(
            children: [
              Container(
                margin:  EdgeInsets.all(_font_size),
                child: RaisedButton(
                onPressed: () {},
                child: Text('Add product'),
              ),
              ),
            Column(children: _products.map((element) =>Card(
                child: Column(
                  children: <Widget>[Image.asset("assets/food.jpg"), Text(element)],
                ),
              )).toList()),

            ],
          ),
        ));
      }
    }

Примечание: когда аргумент является статическим, я имею в виду 20.0, тогда он работает идеально, но если мы возьмем его в качестве переменной, компиляция дротика не удастся. Здесь переменная передается внутри EdgeInsets.all метода и компиляция не удалась.

1 Ответ

0 голосов
/ 07 января 2019
@override
  Widget build(BuildContext context) {
    const double _font_size = 20;

    .....

}

Это только константы, поэтому мы должны объявить const как переменную.

...