#flutter
#flutter
Вопрос:
Привет, Fluttermates,
Я пытаюсь использовать mediaquery, чтобы получить размер экрана и сохранить его в переменной с именем size . Я делаю это на другом экране, это выдает мне эту ошибку
Элемент экземпляра ‘context’ не может быть доступен в инициализаторе. (implicit_this_reference_in_initializer в [appname] lib seriveSelection.dart:45)
import 'package:flutter/material.dart';
class home extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<home> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
elevation: 0,
backgroundColor: Colors.white,
centerTitle: true,
automaticallyImplyLeading: false,
title: Text(
'Home',
style: TextStyle(
fontSize: 30,
color: Colors.black,
fontFamily: "Antipasto"
),
),
),
body: myapp(),
);
}
}
class myapp extends StatefulWidget {
@override
_myappState createState() => _myappState();
}
class _myappState extends State<myapp> {
var size = MediaQuery.of(context).size;
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
child: Container(
child: Column(
children: [
Container(
width: 200,
child: Card(
child: Text(
'Welcome'
),
),
)
],
),
)
);
}
}
Ответ №1:
mediaquery выполняется, как только создается экземпляр состояния, что слишком рано для доступа к контексту, который еще не готов. переместите его внутрь build()
метода.
class _myappState extends State<myapp> {
@override
Widget build(BuildContext context) {
var size = MediaQuery.of(context).size;
return SingleChildScrollView(
Комментарии:
1. Спасибо за ответ, я понял это вчера.
2. @NOOB, конечно, ты можешь подтвердить ответ?
3. Спасибо, извините, я новичок в том, чтобы задавать вопросы, но готово