问题描述
我创建了一个包含很多部分的小部件。因此,在一个文件中创建此小部件并不是一个好习惯。所以,我在许多文件中重新排列。我将这些小部件(部分)设为私有,因此无法在其他文件中访问这些小部件。我只想在根小部件中访问这些小部件。(或者可以在其目录文件中访问私有类)我该怎么做?
// homepage/homepage.dart
import 'package:Flutter/material.dart';
class Homepage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child: Column(
children: [
_Part1(),_Part2(),],),);
}
}
// homepage/part1.dart
import 'package:Flutter/material.dart';
class _Part1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
);
}
}
// homepage/part2.dart
import 'package:Flutter/material.dart';
class _Part2 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
);
}
}
解决方法
Dart 具有 part
文件的功能。虽然这不是我认为它的用途,但它也适用于这里。
只需这样做:
// homepage/homepage.dart
import 'package:flutter/material.dart';
part 'part1.dart';
part 'part2.dart';
class Homepage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child: Column(
children: [
_Part1(),_Part2(),],),);
}
}
// homepage/part1.dart
part of 'homepage.dart';
class _Part1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
);
}
}
// homepage/part2.dart
part of 'homepage.dart';
class _Part2 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
);
}
}
部分文件基本上是引用文件的一部分,因此它可以访问引用文件中的所有内容,反之亦然。如果您需要导入任何内容,您必须将它们导入到引用文件中,因为 part
文件从引用文件中获取导入。因此,您会注意到 import 'package:flutter/material.dart';
文件中没有 part
。