【解決方法】Flutterでエンコードされたbase64文字列からDOCX/DOCファイルを表示していますか?


Base64でエンコードされた文字列バージョンのdocxファイルがデータベースに保存されており、ファイルの内容を表示するにはFlutterアプリに埋め込む必要があります。そして、明らかにChatGPTから取得したwebview_flutterを使用してこの解決策を思いつきました。

ダーツ
import 'dart:convert';
    import 'dart:typed_data';
    
    import 'package:flutter/material.dart';
    import 'package:webview_flutter/webview_flutter.dart';
    
    class ExternalViewer extends StatefulWidget {
    
      final Uint8List fileData;
    
      const ExternalViewer({Key? key, required this.fileData}) : super(key: key);
    
      @override
      _ExternalViewerState createState() => _ExternalViewerState();
    }
    
    class _ExternalViewerState extends State<ExternalViewer> {
    
      late WebViewController webController;
      late String base64Data;
    
      @override
      void initState() {
        super.initState();
        base64Data = base64.encode(widget.fileData);
        webController = WebViewController()..setJavaScriptMode(JavaScriptMode.unrestricted);
        loadDocument();
      }
    
      void loadDocument() async {
        final url = 'data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,$base64Data';
        await webController.loadRequest(Uri.parse(url));
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: WebViewWidget(
            controller: webController,
          ),
        );
      }
    }

ただし、代わりに空白の白い画面が表示され、この方法を使用してファイルをロードしようとするとアプリがクラッシュすることがあります。 このようなことが起こる原因となる間違いは何ですか? 現在の解決策が有効ではない場合、代替の解決策は何ですか? サードパーティのライブラリの提案を使用することを受け入れますが、エンコードされたbase64文字列からdocxファイルを表示できるパッケージが見つかりません。

フラッターバージョン: 3.10.2

私が試したこと:

DOCX ファイルを PDF に変換しようとしましたが、変換に失敗しました。

コメント

タイトルとURLをコピーしました