BuildContext


context는 Text 이전에 있는 모든 상위 요소들에 대한 정보이다. BuildContext 덕분에 아주 먼 곳의 요소에 접근할 수 있다. BuildContext는 위젯 트리에서 위젯의 위치를 제공하고 이를 통해 상위 요소 데이터에 접근할 수 있다.

ex) BuildContext 활용

import 'package:flutter/material.dart';

void main() {
  runApp(const App());
}

class App extends StatefulWidget {
  const App({super.key});

  @override
  State<App> createState() => _AppState();
}

class _AppState extends State<App> {
  List<int> numbers = [];

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        textTheme: const TextTheme(
          titleLarge: TextStyle(
            color: Colors.red,
          ),
        ),
      ),
      home: const Scaffold(
        backgroundColor: Color(0xFFF4EDDB),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [MyLargeTitle()], // 세로 가운데
          ),
        ),
      ),
    );
  }
}

class MyLargeTitle extends StatelessWidget {
  // MyLargeTitle에서 부모 요소의 theme의 값에 접근하길 원한다.
  // 부모 요소와 대화할 수 있길 원한다.
  const MyLargeTitle({
    super.key,
  });

  @override
  Widget build(BuildContext context) {
    // context는 Text 이전에 있는 모든 상위 요소들에 대한 정보이다.
    // BuildContext 덕분에 아주 먼 곳의 요소에 접근할 수 있다.
    // BuildContext는 위젯 트리에서 위젯의 위치를 제공하고 이를 통해 상위 요소 데이터에 접근할 수 있다.
    return Text(
      'My large Title',
      style: TextStyle(
          fontSize: 30,
          color:
              Theme.of(context).textTheme.titleLarge?.color), // null safety 적용
    );
  }
}