从 flutter 中的其他文件访问私有类或函数

Pra*_*tik 3 private-class dart flutter

我创建了一个有很多部分的小部件。因此,在一个文件中创建此小部件并不是一种好的做法。因此,我重新排列了许多文件。我将这些小部件(部分)设为私有,这样就无法在其他文件中访问它们。我只想在根小部件中访问这些小部件。(或者可以在其目录文件中访问私有类)我该怎么做?

// homepage/homepage.dart

import 'package:flutter/material.dart';

class Homepage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        children: [
          _Part1(),
          _Part2(),
        ],
      ),
    );
  }
}

Run Code Online (Sandbox Code Playgroud)
// homepage/part1.dart
import 'package:flutter/material.dart';

class _Part1 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      
    );
  }
}
Run Code Online (Sandbox Code Playgroud)
// homepage/part2.dart
import 'package:flutter/material.dart';

class _Part2 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

rkd*_*r0n 8

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(),
        ],
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)
// homepage/part1.dart
part of 'homepage.dart';

class _Part1 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      
    );
  }
}
Run Code Online (Sandbox Code Playgroud)
// homepage/part2.dart
part of 'homepage.dart';

class _Part2 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

部分文件基本上是引用文件的一部分,因此它可以访问引用文件中的所有内容,反之亦然。如果您需要导入任何内容,则必须将它们导入到引用的文件中,因为part文件是从引用的文件中导入的。import 'package:flutter/material.dart';因此,您会注意到文件中没有part