我希望能够访问小部件中显示的上下文实例...我想在列表小部件中使用它

问题描述 投票:0回答:1
import 'package:flutter/material.dart';

class ButtonData {
  final String text;
  final Color? color;

  ButtonData({
    required this.text,
    required this.color,
  });
}

final List<ButtonData> buttonData = [
  ButtonData(text: 'AC', color: Color(0xFFB71C1C)),
  ButtonData(text: '⌫', color: Color(0xFF757575)),
  ButtonData(text: '%', color: Color(0xFF757575)),
  ButtonData(text: '/', color: Color(0xFF757575)),
  ButtonData(text: '7', color: null),
  ButtonData(text: '8', color: null),
  ButtonData(text: '9', color: null),
  ButtonData(text: '×', color: Color(0xFF757575)),
  ButtonData(text: '4', color: null),
  ButtonData(text: '5', color: null),
  ButtonData(text: '6', color: null),
  ButtonData(text: '-', color: Color(0xFF757575)),
  ButtonData(text: '1', color: null),
  ButtonData(text: '2', color: null),
  ButtonData(text: '3', color: null),
  ButtonData(text: '+', color: Color(0xFF757575)),
  ButtonData(text: '0', color: null),
  ButtonData(text: '00', color: null),
  ButtonData(text: '.', color: null),
  ButtonData(text: '=', color: Color(0xFF757575)),
];

那么有没有一种方法可以使用此列表中的上下文实例,或者我可以采取什么替代方法来访问上下文实例,因为我主要想做的是访问 Theme.of(context) .colorScheme 属性,因此它能够

flutter
1个回答
0
投票

如果您想使用 ButtonData 作为小部件,请将其扩展为无状态/有状态小部件,您可以在其中找到上下文和主题。

示例代码:

import 'package:flutter/material.dart';

class ButtonData extends StatelessWidget{
  final String text;
  final Color? color;

  const ButtonData({super.key, 
    required this.text,
    required this.color,
  });
  
  @override
  Widget build(BuildContext context) {
    //you will be able to access theme using context here
    final theme = Theme.of(context);
    
    return Container(
      color: theme.colorScheme.primary,
    );
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.