#flutter #dart #flutter-layout #flutter-dependencies
Вопрос:
У меня такое чувство, что в моем коде что-то не так, но я пытаюсь отобразить набор int
на экране, только чтобы он не превратил их в строку. пожалуйста, посмотрите на мой код и попытайтесь помочь. Я хочу, чтобы « _result = ('$z $y $x $w $v') as int;
отображалось на экране приложения, но при использовании String resultS = _result.toString();
я получаю «Элемент экземпляра» _result «не может быть доступен в инициализаторе». поэтому, когда я пытаюсь инициализировать в конструктор, например
int _result = 0;
MyApp (){
String resultS = _result.toString();
}
затем строковые результаты будут выделены серым цветом и не позволят использовать child: Text('$resultS'),
их в последнем контейнере. что я делаю не так?
Вот полный код:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
var sum = 25;
int _result = 0;
String resultS = _result.toString();
void callForLoop() {
print('The sum of ' '$sum' ' with 5 digits');
for (int z = 1; z <= 9; z ) {
for (int y = 1; y <= 9; y ) {
for (int x = 1; x <= 9; x ) {
for (int w = 1; w <= 9; w ) {
for (int v = 1; v <= 9; v ) {
if (z y x w v == sum) {
if (z < y) {
if (y < x) {
if (x < w) {
if (w < v) {
_result = ('$z $y $x $w $v') as int;
continue;
}
}
}
}
}
}
}
}
}
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
margin: const EdgeInsets.fromLTRB(20, 0, 20, 0),
child: RaisedButton(
onPressed: () => callForLoop(),
child: Text('Call For Loop'),
textColor: Colors.white,
color: Colors.lightBlue,
padding: EdgeInsets.fromLTRB(12, 12, 12, 12),
)),
Container(
margin: const EdgeInsets.fromLTRB(20, 0, 20, 0),
child: RaisedButton(
child: Text('$resultS'),
textColor: Colors.white,
color: Colors.black87,
padding: EdgeInsets.fromLTRB(12, 12, 12, 12),
)),
]))));
}
}
Ответ №1:
Как говорится в ошибке, вы не можете этого сделать. Объявляя и используя его одновременно, вы должны это сделать const
. Если вы хотите развернуть на уровне класса, сделайте это static
так
static const int _result = 0;
String resultS = _result.toString();
внутри метода сборки вам просто нужно сделать это const
@override
Widget build(BuildContext context) {
const int _result = 0;
String resultS = _result.toString();
Комментарии:
1. Кажется, что в коде все правильно, когда я внес эти изменения, но когда я пытаюсь запустить его, я получаю следующее: «тип» Строка «не является подтипом типа «int» в типовом наборе».
2. затем используйте пробный анализ